]> gitweb.michael.orlitzky.com - dead/htsn-import.git/commitdiff
Add tests for TSN.XML.GameInfo.
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 1 Jun 2014 18:27:00 +0000 (14:27 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 1 Jun 2014 18:27:00 +0000 (14:27 -0400)
Fix a find command used in an existing shell test.
Add unsafe_read_document to the Xml module (used in GameInfo tests).

26 files changed:
src/TSN/XML/GameInfo.hs
src/Xml.hs
test/TestSuite.hs
test/shell/import-duplicates.test
test/xml/gameinfo/MLB_Gaming_Matchup_XML.dtd [new file with mode: 0644]
test/xml/gameinfo/MLB_Gaming_Matchup_XML.xml [new file with mode: 0644]
test/xml/gameinfo/MLB_Lineup_XML.dtd [new file with mode: 0644]
test/xml/gameinfo/MLB_Lineup_XML.xml [new file with mode: 0644]
test/xml/gameinfo/MLB_Matchup_XML.dtd [new file with mode: 0644]
test/xml/gameinfo/MLB_Matchup_XML.xml [new file with mode: 0644]
test/xml/gameinfo/MLS_Preview_XML.dtd [new file with mode: 0644]
test/xml/gameinfo/MLS_Preview_XML.xml [new file with mode: 0644]
test/xml/gameinfo/NBALineupXML.dtd [new file with mode: 0644]
test/xml/gameinfo/NBALineupXML.xml [new file with mode: 0644]
test/xml/gameinfo/NBA_Gaming_Matchup_XML.dtd [new file with mode: 0644]
test/xml/gameinfo/NBA_Gaming_Matchup_XML.xml [new file with mode: 0644]
test/xml/gameinfo/NBA_Playoff_Matchup_XML.dtd [new file with mode: 0644]
test/xml/gameinfo/NBA_Playoff_Matchup_XML.xml [new file with mode: 0644]
test/xml/gameinfo/mlbpreviewxml.dtd [new file with mode: 0644]
test/xml/gameinfo/mlbpreviewxml.xml [new file with mode: 0644]
test/xml/gameinfo/nbapreviewxml.dtd [new file with mode: 0644]
test/xml/gameinfo/nbapreviewxml.xml [new file with mode: 0644]
test/xml/gameinfo/nhlpreviewxml.dtd [new file with mode: 0644]
test/xml/gameinfo/nhlpreviewxml.xml [new file with mode: 0644]
test/xml/gameinfo/recapxml.dtd [new file with mode: 0644]
test/xml/gameinfo/recapxml.xml [new file with mode: 0644]

index e9c1899a71d044d96907423d1c42fa2d03d2db69..f5b64e3cd4b0cd510f27f605d914953329a26b25 100644 (file)
 --
 module TSN.XML.GameInfo (
   dtds,
+  gameinfo_tests,
   parse_xml,
   -- * WARNING: these are private but exported to silence warnings
   GameInfoConstructor(..) )
 where
 
 -- System imports.
+import Data.Either ( rights )
 import Data.Time.Clock ( UTCTime )
-import Database.Groundhog ( migrate )
+import Database.Groundhog (
+  countAll,
+  migrate,
+  runMigration,
+  silentMigrationLogger )
+import Database.Groundhog.Generic ( runDbConn )
+import Database.Groundhog.Sqlite ( withSqliteConn )
 import Database.Groundhog.TH (
   groundhog,
   mkPersist )
+import Test.Tasty ( TestTree, testGroup )
+import Test.Tasty.HUnit ( (@?=), testCase )
 import Text.XML.HXT.Core ( XmlTree )
 import Text.XML.HXT.DOM.ShowXml ( xshow )
 
 -- Local imports.
 import TSN.Codegen ( tsn_codegen_config )
-import TSN.DbImport ( DbImport(..), ImportResult(..), run_dbmigrate )
+import TSN.DbImport (
+  DbImport(..),
+  ImportResult(..),
+  run_dbmigrate )
 import TSN.Parse (
   parse_message,
   parse_xmlfid,
@@ -37,7 +50,9 @@ import TSN.Parse (
 import TSN.XmlImport ( XmlImport(..) )
 import Xml (
   FromXml(..),
-  ToDb(..) )
+  ToDb(..),
+  unsafe_read_document )
+
 
 -- | The DTDs for everything that we consider "Game Info."
 --
@@ -137,6 +152,10 @@ instance DbImport Message where
     insert_xml_ msg
     return ImportSucceeded
 
+
+-- | The database schema for GameInfo is trivial; all we need is for
+--   the XML_File_ID to be unique.
+--
 mkPersist tsn_codegen_config [groundhog|
 - entity: GameInfo
   constructors:
@@ -147,3 +166,70 @@ mkPersist tsn_codegen_config [groundhog|
           # Prevent multiple imports of the same message.
           fields: [db_xml_file_id]
 |]
+
+
+--
+-- Tasty Tests
+--
+
+-- | A list of all tests for this module.
+--
+gameinfo_tests :: TestTree
+gameinfo_tests =
+  testGroup
+    "GameInfo tests"
+    [ test_parse_xml_succeeds,
+      test_dbimport_succeeds ]
+
+
+-- | Sample XML documents for GameInfo types.
+--
+gameinfo_test_files :: [FilePath]
+gameinfo_test_files =
+  [ "test/xml/gameinfo/MLB_Gaming_Matchup_XML.xml",
+    "test/xml/gameinfo/MLB_Lineup_XML.xml",
+    "test/xml/gameinfo/MLB_Matchup_XML.xml",
+    "test/xml/gameinfo/mlbpreviewxml.xml",
+    "test/xml/gameinfo/MLS_Preview_XML.xml",
+    "test/xml/gameinfo/NBA_Gaming_Matchup_XML.xml",
+    "test/xml/gameinfo/NBALineupXML.xml",
+    "test/xml/gameinfo/NBA_Playoff_Matchup_XML.xml",
+    "test/xml/gameinfo/nbapreviewxml.xml",
+    "test/xml/gameinfo/nhlpreviewxml.xml",
+    "test/xml/gameinfo/recapxml.xml" ]
+
+
+-- | Make sure we can parse every element of 'gameinfo_test_files'.
+--
+test_parse_xml_succeeds :: TestTree
+test_parse_xml_succeeds =
+  testGroup "parse_xml" $ map check gameinfo_test_files
+  where
+    check t = testCase t $ do
+      x <- unsafe_read_document t
+      let result = parse_xml "dummy" x
+      let actual = case result of -- isRight appears in base-4.7
+                     Left _  -> False
+                     Right _ -> True
+      let expected = True
+      actual @?= expected
+
+
+-- | Ensure that each element of 'gameinfo_test_files' can be imported
+--   by counting the total number of database records (after
+--   importing) and comparing it against the length of
+--   'gameinfo_test_files'.
+--
+test_dbimport_succeeds :: TestTree
+test_dbimport_succeeds = testCase "dbimport succeeds" $ do
+  xmltrees <- mapM unsafe_read_document gameinfo_test_files
+  let msgs = rights $ map (parse_xml "dummy") xmltrees
+  actual <- withSqliteConn ":memory:" $ runDbConn $ do
+                runMigration silentMigrationLogger $ do
+                  migrate (undefined :: GameInfo)
+                mapM_ dbimport msgs
+                countAll (undefined :: GameInfo)
+
+  actual @?= expected
+  where
+    expected = length gameinfo_test_files
index 780a64e6473815ecd0ec88d4257e4d1ce231373c..e7d47a12c319617d9a70c8e7d8f6a8cead7eae81 100644 (file)
@@ -11,6 +11,7 @@ module Xml (
   parse_opts,
   pickle_unpickle,
   unpickleable,
+  unsafe_read_document,
   unsafe_unpickle )
 where
 
@@ -22,6 +23,7 @@ import Text.XML.HXT.Core (
   (/>),
   PU,
   SysConfigList,
+  XmlTree,
   isElem,
   no,
   readDocument,
@@ -153,3 +155,11 @@ unpickleable filepath unpickler = do
 unsafe_unpickle :: FilePath -> PU a -> IO a
 unsafe_unpickle filepath unpickler =
   fmap head $ runX $ xunpickleDocument unpickler parse_opts filepath
+
+
+-- | Read an XML document from a 'FilePath' into an XmlTree. Explode if it
+--   doesn't work.
+--
+unsafe_read_document :: FilePath -> IO XmlTree
+unsafe_read_document filepath =
+  fmap head $ runX $ readDocument parse_opts filepath
index 2db5e45b83510b572de86a40de2aa040d3f2de94..baf5f5d6835ae120c1cf87aa567c5b638adc193c 100644 (file)
@@ -1,6 +1,7 @@
 import Test.Tasty ( TestTree, defaultMain, testGroup )
 
 import TSN.XML.AutoRacingSchedule ( auto_racing_schedule_tests )
+import TSN.XML.GameInfo ( gameinfo_tests )
 import TSN.XML.Heartbeat ( heartbeat_tests )
 import TSN.XML.Injuries ( injuries_tests )
 import TSN.XML.InjuriesDetail ( injuries_detail_tests )
@@ -13,6 +14,7 @@ tests :: TestTree
 tests = testGroup
           "All tests"
           [ auto_racing_schedule_tests,
+            gameinfo_tests,
             heartbeat_tests,
             injuries_tests,
             injuries_detail_tests,
index 039ebad4aafa8c2d77755f8404c6ac0392bc8997..fbbe6d7c6b9d7c1ec0e8d7016fbbf5a53fed34c5 100644 (file)
@@ -13,7 +13,7 @@ rm -f shelltest.sqlite3
 
 # We note the number of XML files that we have. There's one extra
 # Heartbeat.xml that doesn't really count.
-find ./test/xml -name '*.xml' | wc -l
+find ./test/xml -maxdepth 1 -name '*.xml' | wc -l
 >>>
 16
 >>>= 0
diff --git a/test/xml/gameinfo/MLB_Gaming_Matchup_XML.dtd b/test/xml/gameinfo/MLB_Gaming_Matchup_XML.dtd
new file mode 100644 (file)
index 0000000..b9d03c8
--- /dev/null
@@ -0,0 +1,83 @@
+<!ELEMENT XML_File_ID (#PCDATA)>
+<!ELEMENT heading (#PCDATA)>
+<!ELEMENT category (#PCDATA)>
+<!ELEMENT sport (#PCDATA)>
+<!ELEMENT game_id (#PCDATA)>
+<!ELEMENT schedule_id (#PCDATA)>
+<!ELEMENT seasontype (#PCDATA)>
+<!ELEMENT vteam (#PCDATA)>
+<!ELEMENT hteam (#PCDATA)>
+<!ELEMENT vteam_id (#PCDATA)>
+<!ELEMENT hteam_id (#PCDATA)>
+<!ELEMENT Teams (#PCDATA)>
+<!ELEMENT Game_Date (#PCDATA)>
+<!ELEMENT Matchup ( ( Teams, Game_Date ) )>
+<!ELEMENT Wins (#PCDATA)>
+<!ELEMENT Loss (#PCDATA)>
+<!ELEMENT Over (#PCDATA)>
+<!ELEMENT Under (#PCDATA)>
+<!ELEMENT Tied (#PCDATA)>
+<!ELEMENT Records ( ( Wins, Loss, Over, Under, Tied ) )>
+<!ELEMENT Team ( Records* )>
+<!ELEMENT Team_Records ( Team* )>
+<!ELEMENT PML_Wins (#PCDATA)>
+<!ELEMENT PML_Loss (#PCDATA)>
+<!ELEMENT PML_Innings_Pitched (#PCDATA)>
+<!ELEMENT PML_WHIP (#PCDATA)>
+<!ELEMENT PML_Strikeouts (#PCDATA)>
+<!ELEMENT PML_Hits (#PCDATA)>
+<!ELEMENT PML_Runs (#PCDATA)>
+<!ELEMENT PML_ERA (#PCDATA)>
+<!ELEMENT PM_Listing ( ( PML_Wins, PML_Loss, PML_Innings_Pitched, PML_WHIP, PML_Strikeouts, PML_Hits, PML_Runs, PML_ERA ) )>
+<!ELEMENT P_Matchup ( PM_Listing* )>
+<!ELEMENT Pitching_Matchup ( P_Matchup* )>
+<!ELEMENT TML_Wins (#PCDATA)>
+<!ELEMENT TML_Loss (#PCDATA)>
+<!ELEMENT TML_Over (#PCDATA)>
+<!ELEMENT TML_Under (#PCDATA)>
+<!ELEMENT TML_Tied (#PCDATA)>
+<!ELEMENT TML_Batting_Average (#PCDATA)>
+<!ELEMENT TML_ERA (#PCDATA)>
+<!ELEMENT TML_Slugging_Percentage (#PCDATA)>
+<!ELEMENT TML_On_Base_Percentage (#PCDATA)>
+<!ELEMENT TM_Listing ( ( TML_Wins, TML_Loss, TML_Over, TML_Under, TML_Tied, TML_Batting_Average, TML_ERA, TML_Slugging_Percentage, TML_On_Base_Percentage ) )>
+<!ELEMENT T_Matchup ( TM_Listing* )>
+<!ELEMENT Teams_Matchup ( T_Matchup* )>
+<!ELEMENT RM_Date (#PCDATA)>
+<!ELEMENT RMTS_Score (#PCDATA)>
+<!ELEMENT RMTS_Batting_Average (#PCDATA)>
+<!ELEMENT RMTS_Slugging_Percentage (#PCDATA)>
+<!ELEMENT RMTS_On_Base_Percentage (#PCDATA)>
+<!ELEMENT RM_Team_Stats ( ( RMTS_Score, RMTS_Batting_Average, RMTS_Slugging_Percentage, RMTS_On_Base_Percentage ) )>
+<!ELEMENT RM_Money_Line (#PCDATA)>
+<!ELEMENT RM_Over_Under (#PCDATA)>
+<!ELEMENT RM_Over_Under_Outcome (#PCDATA)>
+<!ELEMENT RM_Listing ( ( RM_Date, RM_Team_Stats*, RM_Money_Line, RM_Over_Under, RM_Over_Under_Outcome ) )>
+<!ELEMENT Recent_Meetings ( RM_Listing* )>
+<!ELEMENT LTG_Date (#PCDATA)>
+<!ELEMENT LTG_Away_Team (#PCDATA)>
+<!ELEMENT LTG_Away_Score (#PCDATA)>
+<!ELEMENT LTG_Home_Team (#PCDATA)>
+<!ELEMENT LTG_Home_Score (#PCDATA)>
+<!ELEMENT LTG_Money_Line (#PCDATA)>
+<!ELEMENT LTG_Over_Under (#PCDATA)>
+<!ELEMENT LTG_Win_Loss (#PCDATA)>
+<!ELEMENT LTG_Over_Under_Outcome (#PCDATA)>
+<!ELEMENT LTG_Batting_Average (#PCDATA)>
+<!ELEMENT LTG_Slugging_Percentage (#PCDATA)>
+<!ELEMENT LTG_On_Base_Percentage (#PCDATA)>
+<!ELEMENT LTG_Listing ( ( LTG_Date, LTG_Away_Team, LTG_Away_Score, LTG_Home_Team, LTG_Home_Score, LTG_Money_Line, LTG_Over_Under, LTG_Win_Loss, LTG_Over_Under_Outcome, LTG_Batting_Average, LTG_Slugging_Percentage, LTG_On_Base_Percentage ) )>
+<!ELEMENT Last_Ten_Games ( LTG_Listing* )>
+<!ELEMENT time_stamp (#PCDATA)>
+<!ELEMENT message ( ( XML_File_ID, heading, category, sport, game_id, schedule_id, seasontype, vteam, hteam, vteam_id, hteam_id, Matchup, Team_Records, Pitching_Matchup, Teams_Matchup, Recent_Meetings, Last_Ten_Games*, time_stamp ) )>
+
+<!ATTLIST Records R_Type CDATA #REQUIRED>
+<!ATTLIST Team TR_AwayTeam_HomeTeam CDATA #REQUIRED>
+<!ATTLIST Team TR_Team CDATA #REQUIRED>
+<!ATTLIST PM_Listing PML_Pitcher_Name CDATA #REQUIRED>
+<!ATTLIST P_Matchup PM_Matchup_Type CDATA #REQUIRED>
+<!ATTLIST TM_Listing TML_Team CDATA #REQUIRED>
+<!ATTLIST T_Matchup TM_Matchup_Type CDATA #REQUIRED>
+<!ATTLIST RM_Team_Stats RMTS_AwayHome CDATA #REQUIRED>
+<!ATTLIST RM_Team_Stats RMTS_Team CDATA #REQUIRED>
+<!ATTLIST Last_Ten_Games LTG_Team CDATA #REQUIRED>
diff --git a/test/xml/gameinfo/MLB_Gaming_Matchup_XML.xml b/test/xml/gameinfo/MLB_Gaming_Matchup_XML.xml
new file mode 100644 (file)
index 0000000..474b954
--- /dev/null
@@ -0,0 +1,588 @@
+<?xml version="1.0" standalone="no" ?>\r
+<!DOCTYPE message PUBLIC "-//TSN//DTD Statistics 1.0/EN" "MLB_Gaming_Matchup_XML.dtd">\r
+<message>\r
+<XML_File_ID>210</XML_File_ID>\r
+<heading>BZX%MLB-GMATCHUP-CHC-CIN</heading>\r
+<category>Statistics</category>\r
+<sport>GAMING</sport>\r
+<game_id>16195</game_id>\r
+<schedule_id>16195</schedule_id>\r
+<seasontype>Regular</seasontype>\r
+<vteam>Chicago Cubs</vteam>\r
+<hteam>Cincinnati</hteam>\r
+<vteam_id>002</vteam_id>\r
+<hteam_id>003</hteam_id>\r
+<Matchup>\r
+<Teams>Chicago Cubs vs. Cincinnati Reds</Teams>\r
+<Game_Date>04/05/06 12:35 PM ET</Game_Date>\r
+</Matchup>\r
+<Team_Records>\r
+<Team TR_AwayTeam_HomeTeam="Away" TR_Team="Chicago Cubs">\r
+<Records R_Type="Overall">\r
+<Wins>1</Wins>\r
+<Loss>0</Loss>\r
+<Over>1</Over>\r
+<Under>0</Under>\r
+<Tied />\r
+</Records>\r
+<Records R_Type="Home">\r
+<Wins>0</Wins>\r
+<Loss>0</Loss>\r
+<Over>0</Over>\r
+<Under>0</Under>\r
+<Tied />\r
+</Records>\r
+<Records R_Type="Away">\r
+<Wins>1</Wins>\r
+<Loss>0</Loss>\r
+<Over>1</Over>\r
+<Under>0</Under>\r
+<Tied />\r
+</Records>\r
+</Team>\r
+<Team TR_AwayTeam_HomeTeam="Home" TR_Team="Cincinnati">\r
+<Records R_Type="Overall">\r
+<Wins>0</Wins>\r
+<Loss>1</Loss>\r
+<Over>1</Over>\r
+<Under>0</Under>\r
+<Tied />\r
+</Records>\r
+<Records R_Type="Home">\r
+<Wins>0</Wins>\r
+<Loss>1</Loss>\r
+<Over>1</Over>\r
+<Under>0</Under>\r
+<Tied />\r
+</Records>\r
+<Records R_Type="Away">\r
+<Wins>0</Wins>\r
+<Loss>0</Loss>\r
+<Over>0</Over>\r
+<Under>0</Under>\r
+<Tied />\r
+</Records>\r
+</Team>\r
+</Team_Records>\r
+<Pitching_Matchup>\r
+<P_Matchup PM_Matchup_Type="Starters Overall">\r
+<PM_Listing PML_Pitcher_Name="G.Rusch">\r
+<PML_Wins>2</PML_Wins>\r
+<PML_Loss>2</PML_Loss>\r
+<PML_Innings_Pitched>22.2</PML_Innings_Pitched>\r
+<PML_WHIP>1.63</PML_WHIP>\r
+<PML_Strikeouts>10</PML_Strikeouts>\r
+<PML_Hits>31</PML_Hits>\r
+<PML_Runs>17</PML_Runs>\r
+<PML_ERA>5.96</PML_ERA>\r
+</PM_Listing>\r
+<PM_Listing PML_Pitcher_Name="B.Arroyo">\r
+<PML_Wins>2</PML_Wins>\r
+<PML_Loss>2</PML_Loss>\r
+<PML_Innings_Pitched>23.2</PML_Innings_Pitched>\r
+<PML_WHIP>1.56</PML_WHIP>\r
+<PML_Strikeouts>19</PML_Strikeouts>\r
+<PML_Hits>28</PML_Hits>\r
+<PML_Runs>20</PML_Runs>\r
+<PML_ERA>7.23</PML_ERA>\r
+</PM_Listing>\r
+</P_Matchup>\r
+<P_Matchup PM_Matchup_Type="Starters Last 3">\r
+<PM_Listing PML_Pitcher_Name="G.Rusch">\r
+<PML_Wins>0</PML_Wins>\r
+<PML_Loss>0</PML_Loss>\r
+<PML_Innings_Pitched>0.0</PML_Innings_Pitched>\r
+<PML_WHIP>0.00</PML_WHIP>\r
+<PML_Strikeouts>0</PML_Strikeouts>\r
+<PML_Hits>0</PML_Hits>\r
+<PML_Runs>0</PML_Runs>\r
+<PML_ERA>----</PML_ERA>\r
+</PM_Listing>\r
+<PM_Listing PML_Pitcher_Name="B.Arroyo">\r
+<PML_Wins>0</PML_Wins>\r
+<PML_Loss>0</PML_Loss>\r
+<PML_Innings_Pitched>0.0</PML_Innings_Pitched>\r
+<PML_WHIP>0.00</PML_WHIP>\r
+<PML_Strikeouts>0</PML_Strikeouts>\r
+<PML_Hits>0</PML_Hits>\r
+<PML_Runs>0</PML_Runs>\r
+<PML_ERA>----</PML_ERA>\r
+</PM_Listing>\r
+</P_Matchup>\r
+</Pitching_Matchup>\r
+<Teams_Matchup>\r
+<T_Matchup TM_Matchup_Type="Overall Stats">\r
+<TM_Listing TML_Team="Chicago Cubs">\r
+<TML_Wins>1</TML_Wins>\r
+<TML_Loss>0</TML_Loss>\r
+<TML_Over>1</TML_Over>\r
+<TML_Under>0</TML_Under>\r
+<TML_Tied />\r
+<TML_Batting_Average>.429</TML_Batting_Average>\r
+<TML_ERA>6.00</TML_ERA>\r
+<TML_Slugging_Percentage>.667</TML_Slugging_Percentage>\r
+<TML_On_Base_Percentage>.490</TML_On_Base_Percentage>\r
+</TM_Listing>\r
+<TM_Listing TML_Team="Cincinnati">\r
+<TML_Wins>0</TML_Wins>\r
+<TML_Loss>1</TML_Loss>\r
+<TML_Over>1</TML_Over>\r
+<TML_Under>0</TML_Under>\r
+<TML_Tied />\r
+<TML_Batting_Average>.324</TML_Batting_Average>\r
+<TML_ERA>10.00</TML_ERA>\r
+<TML_Slugging_Percentage>.588</TML_Slugging_Percentage>\r
+<TML_On_Base_Percentage>.447</TML_On_Base_Percentage>\r
+</TM_Listing>\r
+</T_Matchup>\r
+<T_Matchup TM_Matchup_Type="Last 10 Stats">\r
+<TM_Listing TML_Team="Chicago Cubs">\r
+<TML_Wins>1</TML_Wins>\r
+<TML_Loss>0</TML_Loss>\r
+<TML_Over>1</TML_Over>\r
+<TML_Under>0</TML_Under>\r
+<TML_Tied />\r
+<TML_Batting_Average>.429</TML_Batting_Average>\r
+<TML_ERA>6.00</TML_ERA>\r
+<TML_Slugging_Percentage>.667</TML_Slugging_Percentage>\r
+<TML_On_Base_Percentage>.490</TML_On_Base_Percentage>\r
+</TM_Listing>\r
+<TM_Listing TML_Team="Cincinnati">\r
+<TML_Wins>0</TML_Wins>\r
+<TML_Loss>1</TML_Loss>\r
+<TML_Over>1</TML_Over>\r
+<TML_Under>0</TML_Under>\r
+<TML_Tied />\r
+<TML_Batting_Average>.324</TML_Batting_Average>\r
+<TML_ERA>10.00</TML_ERA>\r
+<TML_Slugging_Percentage>.588</TML_Slugging_Percentage>\r
+<TML_On_Base_Percentage>.447</TML_On_Base_Percentage>\r
+</TM_Listing>\r
+</T_Matchup>\r
+<T_Matchup TM_Matchup_Type="Away Stats">\r
+<TM_Listing TML_Team="Chicago Cubs">\r
+<TML_Wins>1</TML_Wins>\r
+<TML_Loss>0</TML_Loss>\r
+<TML_Over>1</TML_Over>\r
+<TML_Under>0</TML_Under>\r
+<TML_Tied />\r
+<TML_Batting_Average>.429</TML_Batting_Average>\r
+<TML_ERA>6.00</TML_ERA>\r
+<TML_Slugging_Percentage>.667</TML_Slugging_Percentage>\r
+<TML_On_Base_Percentage>.490</TML_On_Base_Percentage>\r
+</TM_Listing>\r
+<TM_Listing TML_Team="Cincinnati">\r
+<TML_Wins>0</TML_Wins>\r
+<TML_Loss>0</TML_Loss>\r
+<TML_Over>0</TML_Over>\r
+<TML_Under>0</TML_Under>\r
+<TML_Tied />\r
+<TML_Batting_Average>----</TML_Batting_Average>\r
+<TML_ERA>----</TML_ERA>\r
+<TML_Slugging_Percentage>----</TML_Slugging_Percentage>\r
+<TML_On_Base_Percentage>----</TML_On_Base_Percentage>\r
+</TM_Listing>\r
+</T_Matchup>\r
+<T_Matchup TM_Matchup_Type="Home Stats">\r
+<TM_Listing TML_Team="Chicago Cubs">\r
+<TML_Wins>0</TML_Wins>\r
+<TML_Loss>0</TML_Loss>\r
+<TML_Over>0</TML_Over>\r
+<TML_Under>0</TML_Under>\r
+<TML_Tied />\r
+<TML_Batting_Average>----</TML_Batting_Average>\r
+<TML_ERA>----</TML_ERA>\r
+<TML_Slugging_Percentage>----</TML_Slugging_Percentage>\r
+<TML_On_Base_Percentage>----</TML_On_Base_Percentage>\r
+</TM_Listing>\r
+<TM_Listing TML_Team="Cincinnati">\r
+<TML_Wins>0</TML_Wins>\r
+<TML_Loss>1</TML_Loss>\r
+<TML_Over>1</TML_Over>\r
+<TML_Under>0</TML_Under>\r
+<TML_Tied />\r
+<TML_Batting_Average>.324</TML_Batting_Average>\r
+<TML_ERA>10.00</TML_ERA>\r
+<TML_Slugging_Percentage>.588</TML_Slugging_Percentage>\r
+<TML_On_Base_Percentage>.447</TML_On_Base_Percentage>\r
+</TM_Listing>\r
+</T_Matchup>\r
+</Teams_Matchup>\r
+<Recent_Meetings>\r
+<RM_Listing>\r
+<RM_Date>04/03/2006</RM_Date>\r
+<RM_Team_Stats RMTS_AwayHome="Away" RMTS_Team="CHC">\r
+<RMTS_Score>16</RMTS_Score>\r
+<RMTS_Batting_Average>.429</RMTS_Batting_Average>\r
+<RMTS_Slugging_Percentage>.667</RMTS_Slugging_Percentage>\r
+<RMTS_On_Base_Percentage>.490</RMTS_On_Base_Percentage>\r
+</RM_Team_Stats>\r
+<RM_Team_Stats RMTS_AwayHome="Home" RMTS_Team="CIN">\r
+<RMTS_Score>7</RMTS_Score>\r
+<RMTS_Batting_Average>.324</RMTS_Batting_Average>\r
+<RMTS_Slugging_Percentage>.588</RMTS_Slugging_Percentage>\r
+<RMTS_On_Base_Percentage>.447</RMTS_On_Base_Percentage>\r
+</RM_Team_Stats>\r
+<RM_Money_Line>130</RM_Money_Line>\r
+<RM_Over_Under>8.5</RM_Over_Under>\r
+<RM_Over_Under_Outcome>O</RM_Over_Under_Outcome>\r
+</RM_Listing>\r
+<RM_Listing>\r
+<RM_Date>09/13/2005</RM_Date>\r
+<RM_Team_Stats RMTS_AwayHome="Away" RMTS_Team="CIN">\r
+<RMTS_Score>3</RMTS_Score>\r
+<RMTS_Batting_Average>.270</RMTS_Batting_Average>\r
+<RMTS_Slugging_Percentage>.405</RMTS_Slugging_Percentage>\r
+<RMTS_On_Base_Percentage>.386</RMTS_On_Base_Percentage>\r
+</RM_Team_Stats>\r
+<RM_Team_Stats RMTS_AwayHome="Home" RMTS_Team="CHC">\r
+<RMTS_Score>4</RMTS_Score>\r
+<RMTS_Batting_Average>.200</RMTS_Batting_Average>\r
+<RMTS_Slugging_Percentage>.400</RMTS_Slugging_Percentage>\r
+<RMTS_On_Base_Percentage>.317</RMTS_On_Base_Percentage>\r
+</RM_Team_Stats>\r
+<RM_Money_Line>-230</RM_Money_Line>\r
+<RM_Over_Under>9</RM_Over_Under>\r
+<RM_Over_Under_Outcome>U</RM_Over_Under_Outcome>\r
+</RM_Listing>\r
+<RM_Listing>\r
+<RM_Date>08/10/2005</RM_Date>\r
+<RM_Team_Stats RMTS_AwayHome="Away" RMTS_Team="CIN">\r
+<RMTS_Score>8</RMTS_Score>\r
+<RMTS_Batting_Average>.212</RMTS_Batting_Average>\r
+<RMTS_Slugging_Percentage>.333</RMTS_Slugging_Percentage>\r
+<RMTS_On_Base_Percentage>.235</RMTS_On_Base_Percentage>\r
+</RM_Team_Stats>\r
+<RM_Team_Stats RMTS_AwayHome="Home" RMTS_Team="CHC">\r
+<RMTS_Score>2</RMTS_Score>\r
+<RMTS_Batting_Average>.182</RMTS_Batting_Average>\r
+<RMTS_Slugging_Percentage>.303</RMTS_Slugging_Percentage>\r
+<RMTS_On_Base_Percentage>.386</RMTS_On_Base_Percentage>\r
+</RM_Team_Stats>\r
+<RM_Money_Line>-127</RM_Money_Line>\r
+<RM_Over_Under>10</RM_Over_Under>\r
+<RM_Over_Under_Outcome>P</RM_Over_Under_Outcome>\r
+</RM_Listing>\r
+<RM_Listing>\r
+<RM_Date>08/08/2005</RM_Date>\r
+<RM_Team_Stats RMTS_AwayHome="Away" RMTS_Team="CIN">\r
+<RMTS_Score>9</RMTS_Score>\r
+<RMTS_Batting_Average>.265</RMTS_Batting_Average>\r
+<RMTS_Slugging_Percentage>.294</RMTS_Slugging_Percentage>\r
+<RMTS_On_Base_Percentage>.359</RMTS_On_Base_Percentage>\r
+</RM_Team_Stats>\r
+<RM_Team_Stats RMTS_AwayHome="Home" RMTS_Team="CHC">\r
+<RMTS_Score>4</RMTS_Score>\r
+<RMTS_Batting_Average>.250</RMTS_Batting_Average>\r
+<RMTS_Slugging_Percentage>.611</RMTS_Slugging_Percentage>\r
+<RMTS_On_Base_Percentage>.357</RMTS_On_Base_Percentage>\r
+</RM_Team_Stats>\r
+<RM_Money_Line>-135</RM_Money_Line>\r
+<RM_Over_Under>10</RM_Over_Under>\r
+<RM_Over_Under_Outcome>O</RM_Over_Under_Outcome>\r
+</RM_Listing>\r
+<RM_Listing>\r
+<RM_Date>07/20/2005</RM_Date>\r
+<RM_Team_Stats RMTS_AwayHome="Away" RMTS_Team="CHC">\r
+<RMTS_Score>3</RMTS_Score>\r
+<RMTS_Batting_Average>.226</RMTS_Batting_Average>\r
+<RMTS_Slugging_Percentage>.452</RMTS_Slugging_Percentage>\r
+<RMTS_On_Base_Percentage>.219</RMTS_On_Base_Percentage>\r
+</RM_Team_Stats>\r
+<RM_Team_Stats RMTS_AwayHome="Home" RMTS_Team="CIN">\r
+<RMTS_Score>9</RMTS_Score>\r
+<RMTS_Batting_Average>.344</RMTS_Batting_Average>\r
+<RMTS_Slugging_Percentage>.750</RMTS_Slugging_Percentage>\r
+<RMTS_On_Base_Percentage>.450</RMTS_On_Base_Percentage>\r
+</RM_Team_Stats>\r
+<RM_Money_Line>135</RM_Money_Line>\r
+<RM_Over_Under>9</RM_Over_Under>\r
+<RM_Over_Under_Outcome>O</RM_Over_Under_Outcome>\r
+</RM_Listing>\r
+</Recent_Meetings>\r
+<Last_Ten_Games LTG_Team="CHICAGO CUBS">\r
+<LTG_Listing>\r
+<LTG_Date>04/03/2006</LTG_Date>\r
+<LTG_Away_Team>CHC</LTG_Away_Team>\r
+<LTG_Away_Score>16</LTG_Away_Score>\r
+<LTG_Home_Team>CIN</LTG_Home_Team>\r
+<LTG_Home_Score>7</LTG_Home_Score>\r
+<LTG_Money_Line>-130</LTG_Money_Line>\r
+<LTG_Over_Under>8.5</LTG_Over_Under>\r
+<LTG_Win_Loss>W</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>O</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.429</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.667</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.490</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>10/02/2005</LTG_Date>\r
+<LTG_Away_Team>CHC</LTG_Away_Team>\r
+<LTG_Away_Score>4</LTG_Away_Score>\r
+<LTG_Home_Team>HOU</LTG_Home_Team>\r
+<LTG_Home_Score>6</LTG_Home_Score>\r
+<LTG_Money_Line>225</LTG_Money_Line>\r
+<LTG_Over_Under>7.5</LTG_Over_Under>\r
+<LTG_Win_Loss>L</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>O</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.270</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.405</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.289</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>10/01/2005</LTG_Date>\r
+<LTG_Away_Team>CHC</LTG_Away_Team>\r
+<LTG_Away_Score>1</LTG_Away_Score>\r
+<LTG_Home_Team>HOU</LTG_Home_Team>\r
+<LTG_Home_Score>3</LTG_Home_Score>\r
+<LTG_Money_Line>215</LTG_Money_Line>\r
+<LTG_Over_Under>7.5</LTG_Over_Under>\r
+<LTG_Win_Loss>L</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>U</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.250</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.250</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.306</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>09/30/2005</LTG_Date>\r
+<LTG_Away_Team>CHC</LTG_Away_Team>\r
+<LTG_Away_Score>4</LTG_Away_Score>\r
+<LTG_Home_Team>HOU</LTG_Home_Team>\r
+<LTG_Home_Score>3</LTG_Home_Score>\r
+<LTG_Money_Line>153</LTG_Money_Line>\r
+<LTG_Over_Under>7</LTG_Over_Under>\r
+<LTG_Win_Loss>W</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>P</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.297</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.378</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.289</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>09/29/2005</LTG_Date>\r
+<LTG_Away_Team>CHC</LTG_Away_Team>\r
+<LTG_Away_Score>3</LTG_Away_Score>\r
+<LTG_Home_Team>HOU</LTG_Home_Team>\r
+<LTG_Home_Score>2</LTG_Home_Score>\r
+<LTG_Money_Line>150</LTG_Money_Line>\r
+<LTG_Over_Under>9</LTG_Over_Under>\r
+<LTG_Win_Loss>W</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>U</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.182</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.364</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.229</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>09/28/2005</LTG_Date>\r
+<LTG_Away_Team>PIT</LTG_Away_Team>\r
+<LTG_Away_Score>3</LTG_Away_Score>\r
+<LTG_Home_Team>CHC</LTG_Home_Team>\r
+<LTG_Home_Score>2</LTG_Home_Score>\r
+<LTG_Money_Line>-195</LTG_Money_Line>\r
+<LTG_Over_Under>9.5</LTG_Over_Under>\r
+<LTG_Win_Loss>L</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>U</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.206</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.324</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.270</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>09/27/2005</LTG_Date>\r
+<LTG_Away_Team>PIT</LTG_Away_Team>\r
+<LTG_Away_Score>5</LTG_Away_Score>\r
+<LTG_Home_Team>CHC</LTG_Home_Team>\r
+<LTG_Home_Score>3</LTG_Home_Score>\r
+<LTG_Money_Line>-120</LTG_Money_Line>\r
+<LTG_Over_Under>0</LTG_Over_Under>\r
+<LTG_Win_Loss>L</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>O</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.219</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.375</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.242</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>09/25/2005</LTG_Date>\r
+<LTG_Away_Team>HOU</LTG_Away_Team>\r
+<LTG_Away_Score>2</LTG_Away_Score>\r
+<LTG_Home_Team>CHC</LTG_Home_Team>\r
+<LTG_Home_Score>3</LTG_Home_Score>\r
+<LTG_Money_Line>153</LTG_Money_Line>\r
+<LTG_Over_Under>9</LTG_Over_Under>\r
+<LTG_Win_Loss>W</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>U</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.172</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.379</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.273</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>09/24/2005</LTG_Date>\r
+<LTG_Away_Team>HOU</LTG_Away_Team>\r
+<LTG_Away_Score>8</LTG_Away_Score>\r
+<LTG_Home_Team>CHC</LTG_Home_Team>\r
+<LTG_Home_Score>3</LTG_Home_Score>\r
+<LTG_Money_Line>-182</LTG_Money_Line>\r
+<LTG_Over_Under>8.5</LTG_Over_Under>\r
+<LTG_Win_Loss>L</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>O</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.133</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.233</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.182</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>09/23/2005</LTG_Date>\r
+<LTG_Away_Team>HOU</LTG_Away_Team>\r
+<LTG_Away_Score>4</LTG_Away_Score>\r
+<LTG_Home_Team>CHC</LTG_Home_Team>\r
+<LTG_Home_Score>5</LTG_Home_Score>\r
+<LTG_Money_Line>0</LTG_Money_Line>\r
+<LTG_Over_Under>0</LTG_Over_Under>\r
+<LTG_Win_Loss>W</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>O</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.286</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.371</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.324</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+</Last_Ten_Games>\r
+<Last_Ten_Games LTG_Team="CINCINNATI">\r
+<LTG_Listing>\r
+<LTG_Date>04/03/2006</LTG_Date>\r
+<LTG_Away_Team>CHC</LTG_Away_Team>\r
+<LTG_Away_Score>16</LTG_Away_Score>\r
+<LTG_Home_Team>CIN</LTG_Home_Team>\r
+<LTG_Home_Score>7</LTG_Home_Score>\r
+<LTG_Money_Line>130</LTG_Money_Line>\r
+<LTG_Over_Under>8.5</LTG_Over_Under>\r
+<LTG_Win_Loss>L</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>O</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.324</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.588</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.447</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>10/02/2005</LTG_Date>\r
+<LTG_Away_Team>CIN</LTG_Away_Team>\r
+<LTG_Away_Score>5</LTG_Away_Score>\r
+<LTG_Home_Team>STL</LTG_Home_Team>\r
+<LTG_Home_Score>7</LTG_Home_Score>\r
+<LTG_Money_Line>143</LTG_Money_Line>\r
+<LTG_Over_Under>9</LTG_Over_Under>\r
+<LTG_Win_Loss>L</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>O</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.256</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.564</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.326</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>10/01/2005</LTG_Date>\r
+<LTG_Away_Team>CIN</LTG_Away_Team>\r
+<LTG_Away_Score>6</LTG_Away_Score>\r
+<LTG_Home_Team>STL</LTG_Home_Team>\r
+<LTG_Home_Score>9</LTG_Home_Score>\r
+<LTG_Money_Line>163</LTG_Money_Line>\r
+<LTG_Over_Under>9.5</LTG_Over_Under>\r
+<LTG_Win_Loss>L</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>O</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.257</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.571</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.333</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>09/30/2005</LTG_Date>\r
+<LTG_Away_Team>CIN</LTG_Away_Team>\r
+<LTG_Away_Score>6</LTG_Away_Score>\r
+<LTG_Home_Team>STL</LTG_Home_Team>\r
+<LTG_Home_Score>12</LTG_Home_Score>\r
+<LTG_Money_Line>165</LTG_Money_Line>\r
+<LTG_Over_Under>9</LTG_Over_Under>\r
+<LTG_Win_Loss>L</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>O</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.257</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.314</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.422</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>09/29/2005</LTG_Date>\r
+<LTG_Away_Team>CIN</LTG_Away_Team>\r
+<LTG_Away_Score>0</LTG_Away_Score>\r
+<LTG_Home_Team>MIL</LTG_Home_Team>\r
+<LTG_Home_Score>2</LTG_Home_Score>\r
+<LTG_Money_Line>142</LTG_Money_Line>\r
+<LTG_Over_Under>10</LTG_Over_Under>\r
+<LTG_Win_Loss>L</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>U</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.100</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.100</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.156</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>09/28/2005</LTG_Date>\r
+<LTG_Away_Team>CIN</LTG_Away_Team>\r
+<LTG_Away_Score>11</LTG_Away_Score>\r
+<LTG_Home_Team>MIL</LTG_Home_Team>\r
+<LTG_Home_Score>4</LTG_Home_Score>\r
+<LTG_Money_Line>133</LTG_Money_Line>\r
+<LTG_Over_Under>9</LTG_Over_Under>\r
+<LTG_Win_Loss>W</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>O</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.341</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.512</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.400</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>09/27/2005</LTG_Date>\r
+<LTG_Away_Team>CIN</LTG_Away_Team>\r
+<LTG_Away_Score>2</LTG_Away_Score>\r
+<LTG_Home_Team>MIL</LTG_Home_Team>\r
+<LTG_Home_Score>6</LTG_Home_Score>\r
+<LTG_Money_Line>120</LTG_Money_Line>\r
+<LTG_Over_Under>9</LTG_Over_Under>\r
+<LTG_Win_Loss>L</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>U</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.176</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.265</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.243</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>09/26/2005</LTG_Date>\r
+<LTG_Away_Team>CIN</LTG_Away_Team>\r
+<LTG_Away_Score>9</LTG_Away_Score>\r
+<LTG_Home_Team>MIL</LTG_Home_Team>\r
+<LTG_Home_Score>12</LTG_Home_Score>\r
+<LTG_Money_Line>150</LTG_Money_Line>\r
+<LTG_Over_Under>9</LTG_Over_Under>\r
+<LTG_Win_Loss>L</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>O</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.273</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.515</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.457</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>09/25/2005</LTG_Date>\r
+<LTG_Away_Team>PHI</LTG_Away_Team>\r
+<LTG_Away_Score>6</LTG_Away_Score>\r
+<LTG_Home_Team>CIN</LTG_Home_Team>\r
+<LTG_Home_Score>3</LTG_Home_Score>\r
+<LTG_Money_Line>163</LTG_Money_Line>\r
+<LTG_Over_Under>11</LTG_Over_Under>\r
+<LTG_Win_Loss>L</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>U</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.273</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.424</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.294</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+<LTG_Listing>\r
+<LTG_Date>09/24/2005</LTG_Date>\r
+<LTG_Away_Team>PHI</LTG_Away_Team>\r
+<LTG_Away_Score>2</LTG_Away_Score>\r
+<LTG_Home_Team>CIN</LTG_Home_Team>\r
+<LTG_Home_Score>3</LTG_Home_Score>\r
+<LTG_Money_Line>142</LTG_Money_Line>\r
+<LTG_Over_Under>11</LTG_Over_Under>\r
+<LTG_Win_Loss>W</LTG_Win_Loss>\r
+<LTG_Over_Under_Outcome>U</LTG_Over_Under_Outcome>\r
+<LTG_Batting_Average>.154</LTG_Batting_Average>\r
+<LTG_Slugging_Percentage>.269</LTG_Slugging_Percentage>\r
+<LTG_On_Base_Percentage>.333</LTG_On_Base_Percentage>\r
+</LTG_Listing>\r
+</Last_Ten_Games>\r
+<time_stamp> April 5, 2006, at 11:59 AM ET </time_stamp>\r
+</message>\r
diff --git a/test/xml/gameinfo/MLB_Lineup_XML.dtd b/test/xml/gameinfo/MLB_Lineup_XML.dtd
new file mode 100644 (file)
index 0000000..78b734f
--- /dev/null
@@ -0,0 +1,49 @@
+<!ELEMENT XML_File_ID (#PCDATA)>
+<!ELEMENT heading (#PCDATA)>
+<!ELEMENT category (#PCDATA)>
+<!ELEMENT sport (#PCDATA)>
+<!ELEMENT game_id (#PCDATA)>
+<!ELEMENT schedule_id (#PCDATA)>
+<!ELEMENT vteam (#PCDATA)>
+<!ELEMENT vteam_id (#PCDATA)>
+<!ELEMENT hteam (#PCDATA)>
+<!ELEMENT hteam_id (#PCDATA)>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT B_Player_ID (#PCDATA)>
+<!ELEMENT B_Position (#PCDATA)>
+<!ELEMENT B_At_Bats (#PCDATA)>
+<!ELEMENT B_Hits (#PCDATA)>
+<!ELEMENT B_Home_Runs (#PCDATA)>
+<!ELEMENT B_RBI (#PCDATA)>
+<!ELEMENT B_Batting_Average (#PCDATA)>
+<!ELEMENT B_Listing ( ( B_Player_ID, B_Position, B_At_Bats, B_Hits, B_Home_Runs, B_RBI, B_Batting_Average ) )>
+<!ELEMENT Batters ( B_Listing* )>
+<!ELEMENT P_Player_ID (#PCDATA)>
+<!ELEMENT P_Innings_Pitched (#PCDATA)>
+<!ELEMENT P_Wins (#PCDATA)>
+<!ELEMENT P_Losses (#PCDATA)>
+<!ELEMENT P_ERA (#PCDATA)>
+<!ELEMENT P_Listing ( ( P_Player_ID, P_Innings_Pitched, P_Wins, P_Losses, P_ERA ) )>
+<!ELEMENT Pitchers ( P_Listing )>
+<!ELEMENT Starting_Lineup ( ( Batters, Pitchers ) )>
+<!ELEMENT Home_Base (#PCDATA)>
+<!ELEMENT First_Base (#PCDATA)>
+<!ELEMENT Second_Base (#PCDATA)>
+<!ELEMENT Third_Base (#PCDATA)>
+<!ELEMENT Left_Field EMPTY>
+<!ELEMENT Right_Field EMPTY>
+<!ELEMENT Umpires ( ( Home_Base, First_Base, Second_Base, Third_Base, Left_Field, Right_Field ) )>
+<!ELEMENT time_stamp (#PCDATA)>
+<!ELEMENT message ( ( XML_File_ID, heading, category, sport, game_id, schedule_id, vteam, vteam_id, hteam, hteam_id, title, Starting_Lineup*, Umpires, time_stamp ) )>
+
+<!ATTLIST B_Listing B_Player_Firstname CDATA #REQUIRED>
+<!ATTLIST B_Listing B_Player_Lastname CDATA #REQUIRED>
+<!ATTLIST P_Listing P_Player_FirstName CDATA #REQUIRED>
+<!ATTLIST P_Listing P_Player_LastName CDATA #REQUIRED>
+<!ATTLIST Starting_Lineup Team CDATA #REQUIRED>
+<!ATTLIST Home_Base HPUmpireID CDATA #REQUIRED>
+<!ATTLIST First_Base FBUmpireID CDATA #REQUIRED>
+<!ATTLIST Second_Base SBUmpireID CDATA #REQUIRED>
+<!ATTLIST Third_Base TBUmpireID CDATA #REQUIRED>
+<!ATTLIST Left_Field LFUmpireID CDATA #REQUIRED>
+<!ATTLIST Right_Field RFUmpireID CDATA #REQUIRED>
diff --git a/test/xml/gameinfo/MLB_Lineup_XML.xml b/test/xml/gameinfo/MLB_Lineup_XML.xml
new file mode 100644 (file)
index 0000000..6c10a6c
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no" ?>\r<!DOCTYPE message PUBLIC "-//TSN//DTD Statistics 1.0/EN" "MLB_Lineup_XML.dtd">\r<message>\r<XML_File_ID>21184832</XML_File_ID>\r<heading>AAB%NL-LINEUP-COL-PHI</heading>\r<category>Statistics</category>\r<sport>MLB</sport>\r<game_id>39939</game_id>\r<schedule_id>39939</schedule_id>\r<vteam>Colorado</vteam>\r<vteam_id>013</vteam_id>\r<hteam>Philadelphia</hteam>\r<hteam_id>008</hteam_id>\r<title>\rStarting Lineup: Colorado at Philadelphia\r</title>\r<Starting_Lineup Team="Colorado">\r<Batters>\r<B_Listing B_Player_Firstname="Charlie"  B_Player_Lastname="Blackmon">\r<B_Player_ID>16929</B_Player_ID>\r<B_Position>CF</B_Position>\r<B_At_Bats>187</B_At_Bats>\r<B_Hits>60</B_Hits>\r<B_Home_Runs>9</B_Home_Runs>\r<B_RBI>33</B_RBI>\r<B_Batting_Average>.321</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="DJ"  B_Player_Lastname="LeMahieu">\r<B_Player_ID>20871</B_Player_ID>\r<B_Position>2B</B_Position>\r<B_At_Bats>155</B_At_Bats>\r<B_Hits>42</B_Hits>\r<B_Home_Runs>0</B_Home_Runs>\r<B_RBI>12</B_RBI>\r<B_Batting_Average>.271</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Justin"  B_Player_Lastname="Morneau">\r<B_Player_ID>6627</B_Player_ID>\r<B_Position>1B</B_Position>\r<B_At_Bats>182</B_At_Bats>\r<B_Hits>56</B_Hits>\r<B_Home_Runs>9</B_Home_Runs>\r<B_RBI>32</B_RBI>\r<B_Batting_Average>.308</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Michael"  B_Player_Lastname="Cuddyer">\r<B_Player_ID>6060</B_Player_ID>\r<B_Position>RF</B_Position>\r<B_At_Bats>91</B_At_Bats>\r<B_Hits>29</B_Hits>\r<B_Home_Runs>5</B_Home_Runs>\r<B_RBI>13</B_RBI>\r<B_Batting_Average>.319</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Corey"  B_Player_Lastname="Dickerson">\r<B_Player_ID>22816</B_Player_ID>\r<B_Position>LF</B_Position>\r<B_At_Bats>72</B_At_Bats>\r<B_Hits>25</B_Hits>\r<B_Home_Runs>5</B_Home_Runs>\r<B_RBI>13</B_RBI>\r<B_Batting_Average>.347</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Wilin"  B_Player_Lastname="Rosario">\r<B_Player_ID>20027</B_Player_ID>\r<B_Position>C</B_Position>\r<B_At_Bats>119</B_At_Bats>\r<B_Hits>27</B_Hits>\r<B_Home_Runs>5</B_Home_Runs>\r<B_RBI>21</B_RBI>\r<B_Batting_Average>.227</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Josh"  B_Player_Lastname="Rutledge">\r<B_Player_ID>22192</B_Player_ID>\r<B_Position>SS</B_Position>\r<B_At_Bats>27</B_At_Bats>\r<B_Hits>8</B_Hits>\r<B_Home_Runs>1</B_Home_Runs>\r<B_RBI>4</B_RBI>\r<B_Batting_Average>.296</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Charlie"  B_Player_Lastname="Culberson">\r<B_Player_ID>20321</B_Player_ID>\r<B_Position>3B</B_Position>\r<B_At_Bats>60</B_At_Bats>\r<B_Hits>12</B_Hits>\r<B_Home_Runs>1</B_Home_Runs>\r<B_RBI>6</B_RBI>\r<B_Batting_Average>.200</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Jordan"  B_Player_Lastname="Lyles">\r<B_Player_ID>21320</B_Player_ID>\r<B_Position>P</B_Position>\r<B_At_Bats>25</B_At_Bats>\r<B_Hits>5</B_Hits>\r<B_Home_Runs>1</B_Home_Runs>\r<B_RBI>3</B_RBI>\r<B_Batting_Average>.200</B_Batting_Average>\r</B_Listing>\r</Batters>\r<Pitchers>\r<P_Listing P_Player_FirstName="Jordan" P_Player_LastName="Lyles">\r<P_Player_ID>21320</P_Player_ID>\r<P_Innings_Pitched>60</P_Innings_Pitched>\r<P_Wins>5</P_Wins>\r<P_Losses>1</P_Losses>\r<P_ERA>3.45</P_ERA>\r</P_Listing>\r</Pitchers>\r</Starting_Lineup>\r<Starting_Lineup Team="Philadelphia">\r<Batters>\r<B_Listing B_Player_Firstname="Ben"  B_Player_Lastname="Revere">\r<B_Player_ID>20658</B_Player_ID>\r<B_Position>CF</B_Position>\r<B_At_Bats>163</B_At_Bats>\r<B_Hits>47</B_Hits>\r<B_Home_Runs>1</B_Home_Runs>\r<B_RBI>8</B_RBI>\r<B_Batting_Average>.288</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Jimmy"  B_Player_Lastname="Rollins">\r<B_Player_ID>5535</B_Player_ID>\r<B_Position>SS</B_Position>\r<B_At_Bats>175</B_At_Bats>\r<B_Hits>45</B_Hits>\r<B_Home_Runs>6</B_Home_Runs>\r<B_RBI>22</B_RBI>\r<B_Batting_Average>.257</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Chase"  B_Player_Lastname="Utley">\r<B_Player_ID>6565</B_Player_ID>\r<B_Position>2B</B_Position>\r<B_At_Bats>183</B_At_Bats>\r<B_Hits>61</B_Hits>\r<B_Home_Runs>4</B_Home_Runs>\r<B_RBI>25</B_RBI>\r<B_Batting_Average>.333</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Ryan"  B_Player_Lastname="Howard">\r<B_Player_ID>7449</B_Player_ID>\r<B_Position>1B</B_Position>\r<B_At_Bats>179</B_At_Bats>\r<B_Hits>42</B_Hits>\r<B_Home_Runs>8</B_Home_Runs>\r<B_RBI>30</B_RBI>\r<B_Batting_Average>.235</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Marlon"  B_Player_Lastname="Byrd">\r<B_Player_ID>6297</B_Player_ID>\r<B_Position>RF</B_Position>\r<B_At_Bats>188</B_At_Bats>\r<B_Hits>52</B_Hits>\r<B_Home_Runs>6</B_Home_Runs>\r<B_RBI>29</B_RBI>\r<B_Batting_Average>.277</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Domonic"  B_Player_Lastname="Brown">\r<B_Player_ID>19586</B_Player_ID>\r<B_Position>LF</B_Position>\r<B_At_Bats>170</B_At_Bats>\r<B_Hits>35</B_Hits>\r<B_Home_Runs>3</B_Home_Runs>\r<B_RBI>22</B_RBI>\r<B_Batting_Average>.206</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Carlos"  B_Player_Lastname="Ruiz">\r<B_Player_ID>16077</B_Player_ID>\r<B_Position>C</B_Position>\r<B_At_Bats>134</B_At_Bats>\r<B_Hits>36</B_Hits>\r<B_Home_Runs>1</B_Home_Runs>\r<B_RBI>10</B_RBI>\r<B_Batting_Average>.269</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Cesar"  B_Player_Lastname="Hernandez">\r<B_Player_ID>21451</B_Player_ID>\r<B_Position>3B</B_Position>\r<B_At_Bats>34</B_At_Bats>\r<B_Hits>5</B_Hits>\r<B_Home_Runs>1</B_Home_Runs>\r<B_RBI>1</B_RBI>\r<B_Batting_Average>.147</B_Batting_Average>\r</B_Listing>\r<B_Listing B_Player_Firstname="Roberto"  B_Player_Lastname="Hernandez">\r<B_Player_ID>8334</B_Player_ID>\r<B_Position>P</B_Position>\r<B_At_Bats>14</B_At_Bats>\r<B_Hits>0</B_Hits>\r<B_Home_Runs>0</B_Home_Runs>\r<B_RBI>0</B_RBI>\r<B_Batting_Average>.000</B_Batting_Average>\r</B_Listing>\r</Batters>\r<Pitchers>\r<P_Listing P_Player_FirstName="Roberto" P_Player_LastName="Hernandez">\r<P_Player_ID>8334</P_Player_ID>\r<P_Innings_Pitched>47</P_Innings_Pitched>\r<P_Wins>2</P_Wins>\r<P_Losses>2</P_Losses>\r<P_ERA>3.83</P_ERA>\r</P_Listing>\r</Pitchers>\r</Starting_Lineup>\r<Umpires>\r<Home_Base HPUmpireID="99">David Rackley</Home_Base>\r<First_Base FBUmpireID="54">Tony Randazzo</First_Base>\r<Second_Base SBUmpireID="71">Jim Wolf</Second_Base>\r<Third_Base TBUmpireID="31">Brian Gorman</Third_Base>\r<Left_Field LFUmpireID="0"></Left_Field>\r<Right_Field RFUmpireID="0"></Right_Field>\r</Umpires>\r<time_stamp> May 28, 2014, at 04:59 PM ET </time_stamp>\r</message>\r
\ No newline at end of file
diff --git a/test/xml/gameinfo/MLB_Matchup_XML.dtd b/test/xml/gameinfo/MLB_Matchup_XML.dtd
new file mode 100644 (file)
index 0000000..70f3933
--- /dev/null
@@ -0,0 +1,33 @@
+<!ELEMENT XML_File_ID (#PCDATA)>
+<!ELEMENT heading (#PCDATA)>
+<!ELEMENT category (#PCDATA)>
+<!ELEMENT sport (#PCDATA)>
+<!ELEMENT schedule_id (#PCDATA)>
+<!ELEMENT seasontype (#PCDATA)>
+<!ELEMENT vteam (#PCDATA)>
+<!ELEMENT hteam (#PCDATA)>
+<!ELEMENT vteam_id (#PCDATA)>
+<!ELEMENT hteam_id (#PCDATA)>
+<!ELEMENT Title (#PCDATA)>
+<!ELEMENT Matchup (#PCDATA)>
+<!ELEMENT Head_To_Head_Record (#PCDATA)>
+<!ELEMENT Home_Record (#PCDATA)>
+<!ELEMENT Away_Record (#PCDATA)>
+<!ELEMENT Current_Streak (#PCDATA)>
+<!ELEMENT Record_Vs (#PCDATA)>
+<!ELEMENT Team_Records ( ( Head_To_Head_Record*, Home_Record, Away_Record, Current_Streak, Record_Vs* ) )>
+<!ELEMENT PM_Listing (#PCDATA)>
+<!ELEMENT Previous_Meetings ( PM_Listing* )>
+<!ELEMENT LFG_Listing (#PCDATA)>
+<!ELEMENT Team ( LFG_Listing* )>
+<!ELEMENT Last_Five_Games ( Team* )>
+<!ELEMENT time_stamp (#PCDATA)>
+<!ELEMENT message ( ( XML_File_ID, heading, category, sport, schedule_id, seasontype, vteam, hteam, vteam_id, hteam_id, Title, Matchup, Upcoming_Games_And_Results?, Team_Records, Previous_Meetings*, Last_Five_Games, time_stamp ) )>
+<!ELEMENT UGAR_Listing (#PCDATA)>
+<!ELEMENT Upcoming_Games_And_Results ( UGAR_Listing* )>
+
+<!ATTLIST Head_To_Head_Record HTHR_Season CDATA #REQUIRED>
+<!ATTLIST Record_Vs RV_Opponents CDATA #REQUIRED>
+<!ATTLIST Previous_Meetings PM_Season CDATA #REQUIRED>
+<!ATTLIST Team Name CDATA #REQUIRED>
+<!ATTLIST UGAR_Listing Game_Number CDATA #REQUIRED>
diff --git a/test/xml/gameinfo/MLB_Matchup_XML.xml b/test/xml/gameinfo/MLB_Matchup_XML.xml
new file mode 100644 (file)
index 0000000..a1e2a0e
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no" ?>\r<!DOCTYPE message PUBLIC "-//TSN//DTD Statistics 1.0/EN" "MLB_Matchup_XML.dtd">\r<message>\r<XML_File_ID>21161219</XML_File_ID>\r<heading>AAX%MATCHUP-ARI-NYM</heading>\r<category>Statistics</category>\r<sport>MLB</sport>\r<schedule_id>39877</schedule_id>\r<seasontype>Regular</seasontype>\r<vteam>Arizona</vteam>\r<hteam>NY Mets</hteam>\r<vteam_id>055</vteam_id>\r<hteam_id>007</hteam_id>\r<Title>NL Matchup -- Arizona at New York Mets</Title>\r<Matchup>Arizona Diamondbacks (18-31) at New York Mets (21-25)</Matchup>\r<Team_Records>\r<Head_To_Head_Record HTHR_Season="2014">\rNew York 3-0 (3-0 at Ari; 0-0 at NY)\r</Head_To_Head_Record>\r<Head_To_Head_Record HTHR_Season="2013">\rNew York 4-3 (2-1 at Ari; 2-2 at NY)\r</Head_To_Head_Record>\r<Head_To_Head_Record HTHR_Season="2012">\rNew York 4-3 (2-2 at Ari; 2-1 at NY)\r</Head_To_Head_Record>\r<Head_To_Head_Record HTHR_Season="2011">\rTied 3-3 (Ari 3-0 at Home; 0-3 at NY)\r</Head_To_Head_Record>\r<Home_Record>Arizona 6-18; New York 10-14</Home_Record>\r<Away_Record>Arizona 12-13; New York 11-11</Away_Record>\r<Current_Streak>Arizona (L3); New York (W1)</Current_Streak>\r<Record_Vs RV_Opponents="Eastern Division">Arizona 2-7</Record_Vs>\r<Record_Vs RV_Opponents="Western Division">New York 5-5</Record_Vs>\r</Team_Records>\r<Previous_Meetings PM_Season="2014">\r<PM_Listing>\r4/14 - New York, 7-3 (at Ari - WP: Wheeler; LP: Collmenter)\r</PM_Listing>\r<PM_Listing>\r4/15 - New York, 9-0 (at Ari - WP: Mejia; LP: Arroyo)\r</PM_Listing>\r<PM_Listing>\r4/16 - New York, 5-2 (at Ari - WP: Gee; LP: McCarthy)\r</PM_Listing>\r<PM_Listing>\r5/23 - Postponed at New York (To be made-up May 25th)\r</PM_Listing>\r</Previous_Meetings>\r<Previous_Meetings PM_Season="2013">\r<PM_Listing>\r7/01 - New York, 5-4 (13) (at NY - WP: Aardsma; LP: Collmenter)\r</PM_Listing>\r<PM_Listing>\r7/02 - New York, 9-1 (at NY - WP: Hefner; LP: Corbin)\r</PM_Listing>\r<PM_Listing>\r7/03 - Arizona, 5-3 (at NY - WP: Delgado; LP: Harvey)\r</PM_Listing>\r<PM_Listing>\r7/04 - Arizona, 5-4 (15) (at NY - WP: Roe; LP: Rice)\r</PM_Listing>\r<PM_Listing>\r8/09 - Arizona, 5-4 (at Ari - WP: Ziegler; LP: Atchison)\r</PM_Listing>\r<PM_Listing>\r8/10 - New York, 4-1 (at Ari - WP: Wheeler; LP: McCarthy)\r</PM_Listing>\r<PM_Listing>\r8/11 - New York, 9-5 (at Ari - WP: Niese; LP: Spruill)\r</PM_Listing>\r</Previous_Meetings>\r<Previous_Meetings PM_Season="2012">\r<PM_Listing>\r5/04 - Arizona, 5-4 (at NY - WP: Ziegler; LP: Rauch)\r</PM_Listing>\r<PM_Listing>\r5/05 - New York, 4-3 (at NY - WP: J.Santana; LP: Corbin)\r</PM_Listing>\r<PM_Listing>\r5/06 - New York, 3-1 (at NY - WP: Dickey; LP: Cahill)\r</PM_Listing>\r<PM_Listing>\r7/26 - New York, 3-1 (at Ari - WP: Harvey; LP: Miley)\r</PM_Listing>\r<PM_Listing>\r7/27 - Arizona, 11-5 (at Ari - WP: Collmenter; LP: Niese)\r</PM_Listing>\r<PM_Listing>\r7/28 - Arizona, 6-3 (at Ari - WP: Kennedy; LP: Young)\r</PM_Listing>\r<PM_Listing>\r7/29 - New York, 5-1 (at Ari - WP: Dickey; LP: Saunders)\r</PM_Listing>\r</Previous_Meetings>\r<Last_Five_Games>\r<Team Name="Arizona">\r<LFG_Listing>5/17 - W vs. Los Angeles, 18-7</LFG_Listing>\r<LFG_Listing>5/18 - W vs. Los Angeles, 5-3</LFG_Listing>\r<LFG_Listing>5/20 - L at  St. Louis, 0-5</LFG_Listing>\r<LFG_Listing>5/21 - L at  St. Louis, 2-3 (12)</LFG_Listing>\r<LFG_Listing>5/22 - L at  St. Louis, 2-4</LFG_Listing>\r</Team>\r<Team Name="New York">\r<LFG_Listing>5/17 - W at  Washington, 5-2</LFG_Listing>\r<LFG_Listing>5/18 - L at  Washington, 3-6</LFG_Listing>\r<LFG_Listing>5/20 - L vs. Los Angeles, 4-9</LFG_Listing>\r<LFG_Listing>5/21 - L vs. Los Angeles, 3-4</LFG_Listing>\r<LFG_Listing>5/22 - W vs. Los Angeles, 5-3</LFG_Listing>\r</Team>\r</Last_Five_Games>\r<time_stamp> May 24, 2014, at 11:56 AM ET </time_stamp>\r</message>\r
\ No newline at end of file
diff --git a/test/xml/gameinfo/MLS_Preview_XML.dtd b/test/xml/gameinfo/MLS_Preview_XML.dtd
new file mode 100644 (file)
index 0000000..8b80a8d
--- /dev/null
@@ -0,0 +1,18 @@
+<!ELEMENT XML_File_ID (#PCDATA)>
+<!ELEMENT heading (#PCDATA)>
+<!ELEMENT game_id (#PCDATA)>
+<!ELEMENT schedule_id (#PCDATA)>
+<!ELEMENT category (#PCDATA)>
+<!ELEMENT sport (#PCDATA)>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT Game_Date (#PCDATA)>
+<!ELEMENT Game_Time (#PCDATA)>
+<!ELEMENT vteam (#PCDATA)>
+<!ELEMENT hteam (#PCDATA)>
+<!ELEMENT P (#PCDATA)>
+<!ELEMENT body ( #PCDATA | P )*>
+<!ELEMENT time_stamp (#PCDATA)>
+<!ELEMENT message ( ( XML_File_ID, heading, game_id, schedule_id, category, sport, title, Game_Date, Game_Time, vteam, hteam, body, time_stamp ) )>
+
+<!ATTLIST vteam id CDATA #REQUIRED>
+<!ATTLIST hteam id CDATA #REQUIRED>
diff --git a/test/xml/gameinfo/MLS_Preview_XML.xml b/test/xml/gameinfo/MLS_Preview_XML.xml
new file mode 100644 (file)
index 0000000..cdf1264
--- /dev/null
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!DOCTYPE message PUBLIC "-//TSN//DTD Preview 1.0/EN" "MLS_Preview_XML.dtd">\r
+<message>\r
+<XML_File_ID>16452086</XML_File_ID>\r
+<heading>AHV!MLSPREVIEW-RBN-DCU</heading>\r
+<game_id>2439</game_id>\r
+<schedule_id>2439</schedule_id>\r
+<category>Previews</category>\r
+<sport>SOC-MLS</sport>\r
+<title>\r
+MLS Preview from The Sports Network (ET)\r
+</title>\r
+<Game_Date>08/29/2012</Game_Date>\r
+<Game_Time>08:00 PM</Game_Time>\r
+<vteam id="996">Red Bull New York</vteam>\r
+<hteam id="999">D.C.</hteam>\r
+<body>\r
+                            Wednesday, Aug. 29, 2012\r
+                              (All times Eastern)\r
\r
+<P>\r
+               New York (13-7-6) at D.C. United (12-9-4), 8 p.m.\r
\r
+</P>\r
\r
+<P>\r
+ Washington,  D.C.  (Sports  Network) - D.C. United continues a busy stretch on\r
+ Wednesday night against Red Bull New York, and its recent loss at the Montreal\r
+ Impact is already "forgotten," according to Andy Najar.\r
\r
+</P>\r
+<P>\r
+ United coach Ben Olsen did not start a number of regulars over the weekend and\r
+ D.C. lost, 3-0, in  Montreal. But with its fourth match in just 11 days on the\r
+ horizon against New York, Olsen knew players needed a rest.\r
\r
+</P>\r
+<P>\r
+ Montreal took advantage to win its fifth straight match, and moved within just\r
+ one point of United for fifth place and the final playoff berth in the Eastern\r
+ Conference.\r
\r
+</P>\r
+<P>\r
+ But with three matches in hand on Montreal, United can remain confident of its\r
+ chances of its first playoff berth since 2007 with a win against New York\r
\r
+</P>\r
+<P>\r
+ "We've forgotten that already," said Najar about the Montreal loss. "There's a\r
+ more  important  game  Wednesday.  We are going in  with the full intention of\r
+ taking all three points."\r
\r
+</P>\r
+<P>\r
+ United (12-9-4) has been impressive at home this season, going unbeaten in its\r
+ last 12 games since a season-opening loss to Sporting Kansas City. Another win\r
+ at RFK against New York, and Olsen will feel even better about his decision to\r
+ rest players.\r
\r
+</P>\r
+<P>\r
+ Although  Olsen used  Branko Boskovic, Dwayne De Rosario and Chris Pontius off\r
+ the bench, it was after  Montreal took a two-goal lead. Like Najar, De Rosario\r
+ was focused on the upcoming match.\r
\r
+</P>\r
+<P>\r
+ "We are  going to keep  moving  forward," De Rosario said. "We are playing New\r
+ York on Wednesday; it's going to be a massive game."\r
\r
+</P>\r
+<P>\r
+ Pontius scored a hat trick on April 22 at RFK as United beat New York, 4-1. In\r
+ the teams' other  meeting at Red Bull Arena, Brandon Barklage had two goals in\r
+ a 3-2 New York win.\r
\r
+</P>\r
+<P>\r
+ United can climb within four points of East leader Sporting KC, but the stakes\r
+ are even higher for New York.\r
\r
+</P>\r
+<P>\r
+ The Red Bulls (13-7-6) are just two points off the summit, and could move into\r
+ the lead with a victory over United.\r
\r
+</P>\r
+<P>\r
+ New York snapped a three-match road losing streak Sunday, tying Sporting on an\r
+ own goal from  Kei Kamara, 1-1. With just a 4-7-3 record on the road, it was a\r
+ positive result for the Red Bulls.\r
\r
+</P>\r
+<P>\r
+ The Red Bulls have earned the most points through 26 games in team history and\r
+ could have Thierry  Henry back after he missed the Sporting fixture due to the\r
+ birth of his son.\r
\r
+</P>\r
+<P>\r
+ "He trained individually on Sunday, Monday, two quite hard sessions," New York\r
+ manager Hans Backe said.\r
\r
+</P>\r
+<P>\r
+ New York could also have recent addition Lloyd Sam, who missed the last match,\r
+ but Backe was not sure about the availability of the midfielder.\r
\r
+</P>\r
+<P>\r
+ Backe  knows a tough match awaits in D.C., one that could ultimately determine\r
+ if his side can secure the regular-season title or even the Supporters' Shield\r
+ for the best overall record.\r
\r
+</P>\r
+</body>\r
+<time_stamp>August 28, 2012, at 06:29 PM ET</time_stamp>\r
+</message>\r
diff --git a/test/xml/gameinfo/NBALineupXML.dtd b/test/xml/gameinfo/NBALineupXML.dtd
new file mode 100644 (file)
index 0000000..d9f1aaf
--- /dev/null
@@ -0,0 +1,23 @@
+<!ELEMENT XML_File_ID (#PCDATA)>
+<!ELEMENT heading (#PCDATA)>
+<!ELEMENT game_id (#PCDATA)>
+<!ELEMENT schedule_id (#PCDATA)>
+<!ELEMENT category (#PCDATA)>
+<!ELEMENT sport (#PCDATA)>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT PlayerID (#PCDATA)>
+<!ELEMENT Player (#PCDATA)>
+<!ELEMENT PPG (#PCDATA)>
+<!ELEMENT RPG (#PCDATA)>
+<!ELEMENT APG (#PCDATA)>
+<!ELEMENT vteam ( ( PlayerID, Player, PPG, RPG, APG ) )>
+<!ELEMENT hteam ( ( PlayerID, Player, PPG, RPG, APG ) )>
+<!ELEMENT officials (#PCDATA)>
+<!ELEMENT time_stamp (#PCDATA)>
+<!ELEMENT message ( ( XML_File_ID | heading | game_id | schedule_id | category | sport | title | vteam | hteam | officials | time_stamp )+ )>
+
+<!ATTLIST Player Position CDATA #REQUIRED>
+<!ATTLIST vteam name CDATA #REQUIRED>
+<!ATTLIST vteam vteamid CDATA #REQUIRED>
+<!ATTLIST hteam name CDATA #REQUIRED>
+<!ATTLIST hteam hteamid CDATA #REQUIRED>
diff --git a/test/xml/gameinfo/NBALineupXML.xml b/test/xml/gameinfo/NBALineupXML.xml
new file mode 100644 (file)
index 0000000..67fa60b
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no" ?>\r<!DOCTYPE message PUBLIC "-//TSN//DTD Lineups 1.0/EN" "NBALineupXML.dtd">\r<message>\r<XML_File_ID>21161264</XML_File_ID>\r<heading>ACB;LINEUP-IND-MIA</heading>\r<game_id>19755</game_id>\r<schedule_id>19755</schedule_id>\r<category>Lineups</category>\r<sport>NBA</sport>\r<title>Probable Starting Lineup: Indiana at Miami</title>\r<vteam name ="Indiana" vteamid ="100">\r<PlayerID>1913</PlayerID>\r<Player Position ="F">Paul George</Player>\r<PPG>21.5</PPG>\r<RPG>8.1</RPG>\r<APG>4.1</APG>\r</vteam>\r<hteam name ="Miami" hteamid ="115">\r<PlayerID>658</PlayerID>\r<Player Position ="F">LeBron James</Player>\r<PPG>28.8</PPG>\r<RPG>7.4</RPG>\r<APG>4.8</APG>\r</hteam>\r<vteam name ="Indiana" vteamid ="100">\r<PlayerID>662</PlayerID>\r<Player Position ="F">David West</Player>\r<PPG>14.6</PPG>\r<RPG>6.5</RPG>\r<APG>4.3</APG>\r</vteam>\r<hteam name ="Miami" hteamid ="115">\r<PlayerID>630</PlayerID>\r<Player Position ="F">Udonis Haslem</Player>\r<PPG>2.1</PPG>\r<RPG>3.1</RPG>\r<APG>0.4</APG>\r</hteam>\r<vteam name ="Indiana" vteamid ="100">\r<PlayerID>1481</PlayerID>\r<Player Position ="C">Roy Hibbert</Player>\r<PPG>9.5</PPG>\r<RPG>5.4</RPG>\r<APG>0.7</APG>\r</vteam>\r<hteam name ="Miami" hteamid ="115">\r<PlayerID>655</PlayerID>\r<Player Position ="C">Chris Bosh</Player>\r<PPG>13.5</PPG>\r<RPG>5.3</RPG>\r<APG>1.2</APG>\r</hteam>\r<vteam name ="Indiana" vteamid ="100">\r<PlayerID>1964</PlayerID>\r<Player Position ="G">Lance Stephenson</Player>\r<PPG>14.5</PPG>\r<RPG>7.1</RPG>\r<APG>4.3</APG>\r</vteam>\r<hteam name ="Miami" hteamid ="115">\r<PlayerID>631</PlayerID>\r<Player Position ="G">Dwyane Wade</Player>\r<PPG>19.2</PPG>\r<RPG>3.5</RPG>\r<APG>4.1</APG>\r</hteam>\r<vteam name ="Indiana" vteamid ="100">\r<PlayerID>1502</PlayerID>\r<Player Position ="G">George Hill</Player>\r<PPG>12.6</PPG>\r<RPG>3.6</RPG>\r<APG>3.1</APG>\r</vteam>\r<hteam name ="Miami" hteamid ="115">\r<PlayerID>1510</PlayerID>\r<Player Position ="G">Mario Chalmers</Player>\r<PPG>7.6</PPG>\r<RPG>2.4</RPG>\r<APG>4.1</APG>\r</hteam>\r<officials>\rOfficials: Monty McCutchen, Tony Brothers, Zach Zarba\r</officials>\r<time_stamp> May 24, 2014, at 12:13 PM ET </time_stamp>\r</message>\r
\ No newline at end of file
diff --git a/test/xml/gameinfo/NBA_Gaming_Matchup_XML.dtd b/test/xml/gameinfo/NBA_Gaming_Matchup_XML.dtd
new file mode 100644 (file)
index 0000000..982ffb8
--- /dev/null
@@ -0,0 +1,69 @@
+<!ELEMENT XML_File_ID (#PCDATA)>
+<!ELEMENT heading (#PCDATA)>
+<!ELEMENT category (#PCDATA)>
+<!ELEMENT sport (#PCDATA)>
+<!ELEMENT game_id (#PCDATA)>
+<!ELEMENT schedule_id (#PCDATA)>
+<!ELEMENT Title (#PCDATA)>
+<!ELEMENT Teams (#PCDATA)>
+<!ELEMENT Date_Time (#PCDATA)>
+<!ELEMENT Matchup ( ( Teams, Date_Time ) )>
+<!ELEMENT Wins_Loss (#PCDATA)>
+<!ELEMENT ATS_Overall (#PCDATA)>
+<!ELEMENT ATS_Home (#PCDATA)>
+<!ELEMENT ATS_Away (#PCDATA)>
+<!ELEMENT OverUnder_Overall (#PCDATA)>
+<!ELEMENT OverUnder_Home (#PCDATA)>
+<!ELEMENT OverUnder_Away (#PCDATA)>
+<!ELEMENT TR ( ( Wins_Loss, ATS_Overall, ATS_Home, ATS_Away, OverUnder_Overall, OverUnder_Home, OverUnder_Away ) )>
+<!ELEMENT Team_Records ( TR* )>
+<!ELEMENT O_Points_For (#PCDATA)>
+<!ELEMENT O_Field_Goal_Percentage (#PCDATA)>
+<!ELEMENT O_Three_Point_Percentage (#PCDATA)>
+<!ELEMENT O_Freethrow_Percantage (#PCDATA)>
+<!ELEMENT O_Offensive_Rebounds (#PCDATA)>
+<!ELEMENT O_Defensive_Rebounds (#PCDATA)>
+<!ELEMENT Offensive_Stats ( ( O_Points_For, O_Field_Goal_Percentage, O_Three_Point_Percentage, O_Freethrow_Percantage, O_Offensive_Rebounds, O_Defensive_Rebounds ) )>
+<!ELEMENT D_Points_Against (#PCDATA)>
+<!ELEMENT D_Field_Goal_Percentage (#PCDATA)>
+<!ELEMENT D_Three_Point_Percentage (#PCDATA)>
+<!ELEMENT D_Freethrow_Percantage (#PCDATA)>
+<!ELEMENT D_Offensive_Rebounds (#PCDATA)>
+<!ELEMENT D_Defensive_Rebounds (#PCDATA)>
+<!ELEMENT Defensive_Stats ( ( D_Points_Against, D_Field_Goal_Percentage, D_Three_Point_Percentage, D_Freethrow_Percantage, D_Offensive_Rebounds, D_Defensive_Rebounds ) )>
+<!ELEMENT Matchup_Stats ( ( Offensive_Stats*, Defensive_Stats* ) )>
+<!ELEMENT Favored (#PCDATA)>
+<!ELEMENT As_Favored_Team ( Favored* )>
+<!ELEMENT Underdog (#PCDATA)>
+<!ELEMENT As_Underdog_Team ( Underdog* )>
+<!ELEMENT Favored_Underdog_Record_Comparison ( ( As_Favored_Team*, As_Underdog_Team* ) )>
+<!ELEMENT Date (#PCDATA)>
+<!ELEMENT Home_Team_Score (#PCDATA)>
+<!ELEMENT Away_Team_Score (#PCDATA)>
+<!ELEMENT Favorite (#PCDATA)>
+<!ELEMENT Line (#PCDATA)>
+<!ELEMENT ATS (#PCDATA)>
+<!ELEMENT Meeting ( ( Date, Home_Team_Score, Away_Team_Score, Favorite, Line, ATS ) )>
+<!ELEMENT Recent_Meetings ( Meeting* )>
+<!ELEMENT Next_Five EMPTY>
+<!ELEMENT LF_Date (#PCDATA)>
+<!ELEMENT LF_Home_Team_Score (#PCDATA)>
+<!ELEMENT LF_Away_Team_Score (#PCDATA)>
+<!ELEMENT LF_Favorite (#PCDATA)>
+<!ELEMENT LF_Line (#PCDATA)>
+<!ELEMENT LF_ATS (#PCDATA)>
+<!ELEMENT LF_Game ( ( LF_Date, LF_Home_Team_Score, LF_Away_Team_Score, LF_Favorite, LF_Line, LF_ATS ) )>
+<!ELEMENT Last_Five ( LF_Game* )>
+<!ELEMENT Next_Five_Last_Five ( ( Next_Five, Last_Five ) )>
+<!ELEMENT time_stamp (#PCDATA)>
+<!ELEMENT message ( ( XML_File_ID, heading, category, sport, game_id, schedule_id, Title, Matchup, Team_Records, Matchup_Stats*, Favored_Underdog_Record_Comparison, Recent_Meetings, Next_Five_Last_Five*, time_stamp ) )>
+
+<!ATTLIST TR Tname CDATA #REQUIRED>
+<!ATTLIST Offensive_Stats OSname CDATA #REQUIRED>
+<!ATTLIST Defensive_Stats DSname CDATA #REQUIRED>
+<!ATTLIST Matchup_Stats Report_Type CDATA #REQUIRED>
+<!ATTLIST Favored FSpread CDATA #REQUIRED>
+<!ATTLIST As_Favored_Team FTname CDATA #REQUIRED>
+<!ATTLIST Underdog USpread CDATA #REQUIRED>
+<!ATTLIST As_Underdog_Team UTname CDATA #REQUIRED>
+<!ATTLIST Next_Five_Last_Five NLname CDATA #REQUIRED>
diff --git a/test/xml/gameinfo/NBA_Gaming_Matchup_XML.xml b/test/xml/gameinfo/NBA_Gaming_Matchup_XML.xml
new file mode 100644 (file)
index 0000000..8b021d5
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no" ?>\r<!DOCTYPE message PUBLIC "-//TSN//DTD Statistics 1.0/EN" "NBA_Gaming_Matchup_XML.dtd">\r<message>\r<XML_File_ID>21189334</XML_File_ID>\r<heading>BZX%NBA-GMATCHUP-OKC-SAN</heading>\r<category>Statistics</category>\r<sport>GAMING</sport>\r<game_id>19760</game_id>\r<schedule_id>19760</schedule_id>\r<Title>Matchup: Oklahoma City Thunder vs. San Antonio Spurs</Title>\r<Matchup>\r<Teams>Oklahoma City Thunder vs. San Antonio Spurs</Teams>\r<Date_Time>05/29/14 9:00 PM</Date_Time>\r</Matchup>\r<Team_Records>\r<TR Tname="Oklahoma City">\r<Wins_Loss>59-23</Wins_Loss>\r<ATS_Overall>43-38-1</ATS_Overall>\r<ATS_Home>23-17-1</ATS_Home>\r<ATS_Away>20-21-0</ATS_Away>\r<OverUnder_Overall>42-39-1</OverUnder_Overall>\r<OverUnder_Home>21-20-0</OverUnder_Home>\r<OverUnder_Away>21-19-1</OverUnder_Away>\r</TR>\r<TR Tname="San Antonio">\r<Wins_Loss>62-20</Wins_Loss>\r<ATS_Overall>45-37-0</ATS_Overall>\r<ATS_Home>20-21-0</ATS_Home>\r<ATS_Away>25-16-0</ATS_Away>\r<OverUnder_Overall>44-38-0</OverUnder_Overall>\r<OverUnder_Home>21-20-0</OverUnder_Home>\r<OverUnder_Away>23-18-0</OverUnder_Away>\r</TR>\r</Team_Records>\r<Matchup_Stats Report_Type="OVERALL STATS">\r<Offensive_Stats OSname="Oklahoma City">\r<O_Points_For>106.2</O_Points_For>\r<O_Field_Goal_Percentage>47.1</O_Field_Goal_Percentage>\r<O_Three_Point_Percentage>36.1</O_Three_Point_Percentage>\r<O_Freethrow_Percantage>80.6</O_Freethrow_Percantage>\r<O_Offensive_Rebounds>10.8</O_Offensive_Rebounds>\r<O_Defensive_Rebounds>33.9</O_Defensive_Rebounds>\r</Offensive_Stats>\r<Offensive_Stats OSname="San Antonio">\r<O_Points_For>105.4</O_Points_For>\r<O_Field_Goal_Percentage>48.6</O_Field_Goal_Percentage>\r<O_Three_Point_Percentage>39.7</O_Three_Point_Percentage>\r<O_Freethrow_Percantage>78.5</O_Freethrow_Percantage>\r<O_Offensive_Rebounds>9.3</O_Offensive_Rebounds>\r<O_Defensive_Rebounds>34.0</O_Defensive_Rebounds>\r</Offensive_Stats>\r<Defensive_Stats DSname="Oklahoma City">\r<D_Points_Against>99.8</D_Points_Against>\r<D_Field_Goal_Percentage>43.6</D_Field_Goal_Percentage>\r<D_Three_Point_Percentage>35.8</D_Three_Point_Percentage>\r<D_Freethrow_Percantage>72.7</D_Freethrow_Percantage>\r<D_Offensive_Rebounds>11.0</D_Offensive_Rebounds>\r<D_Defensive_Rebounds>30.0</D_Defensive_Rebounds>\r</Defensive_Stats>\r<Defensive_Stats DSname="San Antonio">\r<D_Points_Against>97.6</D_Points_Against>\r<D_Field_Goal_Percentage>44.4</D_Field_Goal_Percentage>\r<D_Three_Point_Percentage>35.3</D_Three_Point_Percentage>\r<D_Freethrow_Percantage>76.0</D_Freethrow_Percantage>\r<D_Offensive_Rebounds>10.5</D_Offensive_Rebounds>\r<D_Defensive_Rebounds>31.7</D_Defensive_Rebounds>\r</Defensive_Stats>\r</Matchup_Stats>\r<Matchup_Stats Report_Type="LAST 5">\r<Offensive_Stats OSname="Oklahoma City">\r<O_Points_For>104.2</O_Points_For>\r<O_Field_Goal_Percentage>44.6</O_Field_Goal_Percentage>\r<O_Three_Point_Percentage>26.5</O_Three_Point_Percentage>\r<O_Freethrow_Percantage>82.3</O_Freethrow_Percantage>\r<O_Offensive_Rebounds>12.4</O_Offensive_Rebounds>\r<O_Defensive_Rebounds>30.6</O_Defensive_Rebounds>\r</Offensive_Stats>\r<Offensive_Stats OSname="San Antonio">\r<O_Points_For>102.0</O_Points_For>\r<O_Field_Goal_Percentage>43.5</O_Field_Goal_Percentage>\r<O_Three_Point_Percentage>36.7</O_Three_Point_Percentage>\r<O_Freethrow_Percantage>75.8</O_Freethrow_Percantage>\r<O_Offensive_Rebounds>11.0</O_Offensive_Rebounds>\r<O_Defensive_Rebounds>32.8</O_Defensive_Rebounds>\r</Offensive_Stats>\r<Defensive_Stats DSname="Oklahoma City">\r<D_Points_Against>101.8</D_Points_Against>\r<D_Field_Goal_Percentage>45.8</D_Field_Goal_Percentage>\r<D_Three_Point_Percentage>38.1</D_Three_Point_Percentage>\r<D_Freethrow_Percantage>68.6</D_Freethrow_Percantage>\r<D_Offensive_Rebounds>11.6</D_Offensive_Rebounds>\r<D_Defensive_Rebounds>31.0</D_Defensive_Rebounds>\r</Defensive_Stats>\r<Defensive_Stats DSname="San Antonio">\r<D_Points_Against>106.2</D_Points_Against>\r<D_Field_Goal_Percentage>47.0</D_Field_Goal_Percentage>\r<D_Three_Point_Percentage>33.3</D_Three_Point_Percentage>\r<D_Freethrow_Percantage>81.3</D_Freethrow_Percantage>\r<D_Offensive_Rebounds>10.2</D_Offensive_Rebounds>\r<D_Defensive_Rebounds>38.2</D_Defensive_Rebounds>\r</Defensive_Stats>\r</Matchup_Stats>\r<Matchup_Stats Report_Type="HOME STATS">\r<Offensive_Stats OSname="Oklahoma City">\r<O_Points_For>107.7</O_Points_For>\r<O_Field_Goal_Percentage>48.3</O_Field_Goal_Percentage>\r<O_Three_Point_Percentage>38.1</O_Three_Point_Percentage>\r<O_Freethrow_Percantage>79.3</O_Freethrow_Percantage>\r<O_Offensive_Rebounds>11.1</O_Offensive_Rebounds>\r<O_Defensive_Rebounds>34.3</O_Defensive_Rebounds>\r</Offensive_Stats>\r<Offensive_Stats OSname="San Antonio">\r<O_Points_For>106.3</O_Points_For>\r<O_Field_Goal_Percentage>49.8</O_Field_Goal_Percentage>\r<O_Three_Point_Percentage>42.0</O_Three_Point_Percentage>\r<O_Freethrow_Percantage>77.8</O_Freethrow_Percantage>\r<O_Offensive_Rebounds>8.6</O_Offensive_Rebounds>\r<O_Defensive_Rebounds>34.5</O_Defensive_Rebounds>\r</Offensive_Stats>\r<Defensive_Stats DSname="Oklahoma City">\r<D_Points_Against>98.5</D_Points_Against>\r<D_Field_Goal_Percentage>43.3</D_Field_Goal_Percentage>\r<D_Three_Point_Percentage>36.5</D_Three_Point_Percentage>\r<D_Freethrow_Percantage>69.8</D_Freethrow_Percantage>\r<D_Offensive_Rebounds>11.2</D_Offensive_Rebounds>\r<D_Defensive_Rebounds>28.9</D_Defensive_Rebounds>\r</Defensive_Stats>\r<Defensive_Stats DSname="San Antonio">\r<D_Points_Against>97.4</D_Points_Against>\r<D_Field_Goal_Percentage>44.3</D_Field_Goal_Percentage>\r<D_Three_Point_Percentage>37.0</D_Three_Point_Percentage>\r<D_Freethrow_Percantage>76.2</D_Freethrow_Percantage>\r<D_Offensive_Rebounds>10.4</D_Offensive_Rebounds>\r<D_Defensive_Rebounds>31.3</D_Defensive_Rebounds>\r</Defensive_Stats>\r</Matchup_Stats>\r<Matchup_Stats Report_Type="AWAY STATS">\r<Offensive_Stats OSname="Oklahoma City">\r<O_Points_For>104.6</O_Points_For>\r<O_Field_Goal_Percentage>45.9</O_Field_Goal_Percentage>\r<O_Three_Point_Percentage>34.4</O_Three_Point_Percentage>\r<O_Freethrow_Percantage>81.9</O_Freethrow_Percantage>\r<O_Offensive_Rebounds>10.5</O_Offensive_Rebounds>\r<O_Defensive_Rebounds>33.5</O_Defensive_Rebounds>\r</Offensive_Stats>\r<Offensive_Stats OSname="San Antonio">\r<O_Points_For>104.4</O_Points_For>\r<O_Field_Goal_Percentage>47.4</O_Field_Goal_Percentage>\r<O_Three_Point_Percentage>37.5</O_Three_Point_Percentage>\r<O_Freethrow_Percantage>79.1</O_Freethrow_Percantage>\r<O_Offensive_Rebounds>10.0</O_Offensive_Rebounds>\r<O_Defensive_Rebounds>33.4</O_Defensive_Rebounds>\r</Offensive_Stats>\r<Defensive_Stats DSname="Oklahoma City">\r<D_Points_Against>101.2</D_Points_Against>\r<D_Field_Goal_Percentage>43.9</D_Field_Goal_Percentage>\r<D_Three_Point_Percentage>35.2</D_Three_Point_Percentage>\r<D_Freethrow_Percantage>75.5</D_Freethrow_Percantage>\r<D_Offensive_Rebounds>10.8</D_Offensive_Rebounds>\r<D_Defensive_Rebounds>31.0</D_Defensive_Rebounds>\r</Defensive_Stats>\r<Defensive_Stats DSname="San Antonio">\r<D_Points_Against>97.8</D_Points_Against>\r<D_Field_Goal_Percentage>44.4</D_Field_Goal_Percentage>\r<D_Three_Point_Percentage>33.5</D_Three_Point_Percentage>\r<D_Freethrow_Percantage>75.8</D_Freethrow_Percantage>\r<D_Offensive_Rebounds>10.6</D_Offensive_Rebounds>\r<D_Defensive_Rebounds>32.1</D_Defensive_Rebounds>\r</Defensive_Stats>\r</Matchup_Stats>\r<Favored_Underdog_Record_Comparison>\r<As_Favored_Team FTname="OKC">\r<Favored FSpread="1-2.5">5-3-0</Favored>\r<Favored FSpread="3-3.5">2-3-0</Favored>\r<Favored FSpread="4-4.5">3-0-0</Favored>\r<Favored FSpread="5-5.5">4-2-0</Favored>\r<Favored FSpread="6-6.5">2-6-0</Favored>\r<Favored FSpread="7-7.5">1-3-0</Favored>\r<Favored FSpread="8-8.5">5-1-0</Favored>\r<Favored FSpread="9-9.5">3-6-0</Favored>\r<Favored FSpread="10-10.5">2-2-0</Favored>\r<Favored FSpread="11-13.5">3-5-1</Favored>\r<Favored FSpread="14+">5-2-0</Favored>\r</As_Favored_Team>\r<As_Favored_Team FTname="SAN">\r<Favored FSpread="1-2.5">2-3-0</Favored>\r<Favored FSpread="3-3.5">6-4-0</Favored>\r<Favored FSpread="4-4.5">2-0-0</Favored>\r<Favored FSpread="5-5.5">5-3-0</Favored>\r<Favored FSpread="6-6.5">3-5-0</Favored>\r<Favored FSpread="7-7.5">3-3-0</Favored>\r<Favored FSpread="8-8.5">4-3-0</Favored>\r<Favored FSpread="9-9.5">4-0-0</Favored>\r<Favored FSpread="10-10.5">1-3-0</Favored>\r<Favored FSpread="11-13.5">6-6-0</Favored>\r<Favored FSpread="14+">4-2-0</Favored>\r</As_Favored_Team>\r<As_Underdog_Team UTname="OKC">\r<Underdog USpread="1-2.5">3-4-0</Underdog>\r<Underdog USpread="3-3.5">2-0-0</Underdog>\r<Underdog USpread="4-4.5">1-1-0</Underdog>\r<Underdog USpread="5-5.5">1-0-0</Underdog>\r<Underdog USpread="6-6.5">1-0-0</Underdog>\r<Underdog USpread="7-7.5">0-0-0</Underdog>\r<Underdog USpread="8-8.5">0-0-0</Underdog>\r<Underdog USpread="9-9.5">0-0-0</Underdog>\r<Underdog USpread="10-10.5">0-0-0</Underdog>\r<Underdog USpread="11-13.5">0-0-0</Underdog>\r<Underdog USpread="14+">0-0-0</Underdog>\r</As_Underdog_Team>\r<As_Underdog_Team UTname="SAN">\r<Underdog USpread="1-2.5">3-1-0</Underdog>\r<Underdog USpread="3-3.5">0-1-0</Underdog>\r<Underdog USpread="4-4.5">0-2-0</Underdog>\r<Underdog USpread="5-5.5">0-0-0</Underdog>\r<Underdog USpread="6-6.5">1-1-0</Underdog>\r<Underdog USpread="7-7.5">1-0-0</Underdog>\r<Underdog USpread="8-8.5">0-0-0</Underdog>\r<Underdog USpread="9-9.5">0-0-0</Underdog>\r<Underdog USpread="10-10.5">0-0-0</Underdog>\r<Underdog USpread="11-13.5">0-0-0</Underdog>\r<Underdog USpread="14+">0-0-0</Underdog>\r</As_Underdog_Team>\r</Favored_Underdog_Record_Comparison>\r<Recent_Meetings>\r<Meeting>\r<Date>04/03/14</Date>\r<Home_Team_Score>SAN 94</Home_Team_Score>\r<Away_Team_Score>OKC 106</Away_Team_Score>\r<Favorite>OKC</Favorite>\r<Line>-4/208</Line>\r<ATS>OKC/U</ATS>\r</Meeting>\r<Meeting>\r<Date>01/22/14</Date>\r<Home_Team_Score>OKC 111</Home_Team_Score>\r<Away_Team_Score>SAN 105</Away_Team_Score>\r<Favorite>SAN</Favorite>\r<Line>-6.5/205</Line>\r<ATS>OKC/O</ATS>\r</Meeting>\r<Meeting>\r<Date>12/21/13</Date>\r<Home_Team_Score>OKC 113</Home_Team_Score>\r<Away_Team_Score>SAN 100</Away_Team_Score>\r<Favorite>SAN</Favorite>\r<Line>-3.5/205</Line>\r<ATS>OKC/O</ATS>\r</Meeting>\r<Meeting>\r<Date>11/27/13</Date>\r<Home_Team_Score>SAN 88</Home_Team_Score>\r<Away_Team_Score>OKC 94</Away_Team_Score>\r<Favorite>OKC</Favorite>\r<Line>-2.5/202.5</Line>\r<ATS>OKC/U</ATS>\r</Meeting>\r<Meeting>\r<Date>04/04/13</Date>\r<Home_Team_Score>SAN 88</Home_Team_Score>\r<Away_Team_Score>OKC 100</Away_Team_Score>\r<Favorite>OKC</Favorite>\r<Line>-7.5/201</Line>\r<ATS>OKC/U</ATS>\r</Meeting>\r<Meeting>\r<Date>03/11/13</Date>\r<Home_Team_Score>OKC 93</Home_Team_Score>\r<Away_Team_Score>SAN 105</Away_Team_Score>\r<Favorite>SAN</Favorite>\r<Line>-1.5/206.5</Line>\r<ATS>SAN/U</ATS>\r</Meeting>\r<Meeting>\r<Date>12/17/12</Date>\r<Home_Team_Score>SAN 93</Home_Team_Score>\r<Away_Team_Score>OKC 107</Away_Team_Score>\r<Favorite>OKC</Favorite>\r<Line>-5.5/207</Line>\r<ATS>OKC/U</ATS>\r</Meeting>\r<Meeting>\r<Date>11/01/12</Date>\r<Home_Team_Score>OKC 84</Home_Team_Score>\r<Away_Team_Score>SAN 86</Away_Team_Score>\r<Favorite>SAN</Favorite>\r<Line>-2/204</Line>\r<ATS>-/U</ATS>\r</Meeting>\r<Meeting>\r<Date>03/16/12</Date>\r<Home_Team_Score>SAN 114</Home_Team_Score>\r<Away_Team_Score>OKC 105</Away_Team_Score>\r<Favorite>OKC</Favorite>\r<Line>-4/207.5</Line>\r<ATS>SAN/O</ATS>\r</Meeting>\r<Meeting>\r<Date>02/04/12</Date>\r<Home_Team_Score>OKC 96</Home_Team_Score>\r<Away_Team_Score>SAN 107</Away_Team_Score>\r<Favorite>SAN</Favorite>\r<Line>-3/194.5</Line>\r<ATS>SAN/O</ATS>\r</Meeting>\r</Recent_Meetings>\r<Next_Five_Last_Five NLname="San Antonio'">\r<Next_Five>\r</Next_Five>\r<Last_Five>\r<LF_Game>\r<LF_Date>04/16/14</LF_Date>\r<LF_Home_Team_Score>LAL 113</LF_Home_Team_Score>\r<LF_Away_Team_Score>SAN 100</LF_Away_Team_Score>\r<LF_Favorite>SAN</LF_Favorite>\r<LF_Line>-8.5/217</LF_Line>\r<LF_ATS>LAL/U</LF_ATS>\r</LF_Game>\r<LF_Game>\r<LF_Date>04/14/14</LF_Date>\r<LF_Home_Team_Score>SAN 98</LF_Home_Team_Score>\r<LF_Away_Team_Score>HOU 104</LF_Away_Team_Score>\r<LF_Favorite>HOU</LF_Favorite>\r<LF_Line>-4/212</LF_Line>\r<LF_ATS>HOU/U</LF_ATS>\r</LF_Game>\r<LF_Game>\r<LF_Date>04/11/14</LF_Date>\r<LF_Home_Team_Score>PHO 104</LF_Home_Team_Score>\r<LF_Away_Team_Score>SAN 112</LF_Away_Team_Score>\r<LF_Favorite>SAN</LF_Favorite>\r<LF_Line>-4/206.5</LF_Line>\r<LF_ATS>SAN/O</LF_ATS>\r</LF_Game>\r<LF_Game>\r<LF_Date>04/10/14</LF_Date>\r<LF_Home_Team_Score>SAN 109</LF_Home_Team_Score>\r<LF_Away_Team_Score>DAL 100</LF_Away_Team_Score>\r<LF_Favorite>DAL</LF_Favorite>\r<LF_Line>-1.5/201</LF_Line>\r<LF_ATS>SAN/O</LF_ATS>\r</LF_Game>\r<LF_Game>\r<LF_Date>04/08/14</LF_Date>\r<LF_Home_Team_Score>SAN 91</LF_Home_Team_Score>\r<LF_Away_Team_Score>MIN 110</LF_Away_Team_Score>\r<LF_Favorite>SAN</LF_Favorite>\r<LF_Line>-7.5/207.5</LF_Line>\r<LF_ATS>MIN/U</LF_ATS>\r</LF_Game>\r</Last_Five>\r</Next_Five_Last_Five>\r<Next_Five_Last_Five NLname="Oklahoma City'">\r<Next_Five>\r</Next_Five>\r<Last_Five>\r<LF_Game>\r<LF_Date>04/16/14</LF_Date>\r<LF_Home_Team_Score>DET 111</LF_Home_Team_Score>\r<LF_Away_Team_Score>OKC 112</LF_Away_Team_Score>\r<LF_Favorite>OKC</LF_Favorite>\r<LF_Line>-14/212.5</LF_Line>\r<LF_ATS>DET/O</LF_ATS>\r</LF_Game>\r<LF_Game>\r<LF_Date>04/14/14</LF_Date>\r<LF_Home_Team_Score>OKC 89</LF_Home_Team_Score>\r<LF_Away_Team_Score>NOP 101</LF_Away_Team_Score>\r<LF_Favorite>OKC</LF_Favorite>\r<LF_Line>-8/204</LF_Line>\r<LF_ATS>NOP/U</LF_ATS>\r</LF_Game>\r<LF_Game>\r<LF_Date>04/13/14</LF_Date>\r<LF_Home_Team_Score>OKC 97</LF_Home_Team_Score>\r<LF_Away_Team_Score>IND 102</LF_Away_Team_Score>\r<LF_Favorite>IND</LF_Favorite>\r<LF_Line>-1.5/192</LF_Line>\r<LF_ATS>IND/O</LF_ATS>\r</LF_Game>\r<LF_Game>\r<LF_Date>04/11/14</LF_Date>\r<LF_Home_Team_Score>NOP 94</LF_Home_Team_Score>\r<LF_Away_Team_Score>OKC 116</LF_Away_Team_Score>\r<LF_Favorite>OKC</LF_Favorite>\r<LF_Line>-15.5/205</LF_Line>\r<LF_ATS>OKC/O</LF_ATS>\r</LF_Game>\r<LF_Game>\r<LF_Date>04/09/14</LF_Date>\r<LF_Home_Team_Score>OKC 107</LF_Home_Team_Score>\r<LF_Away_Team_Score>LAC 101</LF_Away_Team_Score>\r<LF_Favorite>LAC</LF_Favorite>\r<LF_Line>-3.5/211</LF_Line>\r<LF_ATS>OKC/U</LF_ATS>\r</LF_Game>\r</Last_Five>\r</Next_Five_Last_Five>\r<time_stamp> May 29, 2014, at 10:44 AM ET </time_stamp>\r</message>\r
\ No newline at end of file
diff --git a/test/xml/gameinfo/NBA_Playoff_Matchup_XML.dtd b/test/xml/gameinfo/NBA_Playoff_Matchup_XML.dtd
new file mode 100644 (file)
index 0000000..b842fd8
--- /dev/null
@@ -0,0 +1,28 @@
+<!ELEMENT XML_File_ID (#PCDATA)>
+<!ELEMENT heading (#PCDATA)>
+<!ELEMENT category (#PCDATA)>
+<!ELEMENT sport (#PCDATA)>
+<!ELEMENT game_id (#PCDATA)>
+<!ELEMENT schedule_id (#PCDATA)>
+<!ELEMENT Matchup_Info (#PCDATA)>
+<!ELEMENT PS_Listing (#PCDATA)>
+<!ELEMENT Playoff_Series ( ( PS_Listing | PS_Note )+ )>
+<!ELEMENT HTH_Listing (#PCDATA)>
+<!ELEMENT Head_To_Head_Record ( HTH_Listing* )>
+<!ELEMENT PSR_Listing (#PCDATA)>
+<!ELEMENT Playoff_Series_Records ( PSR_Listing* )>
+<!ELEMENT Home_Record (#PCDATA)>
+<!ELEMENT Away_Record (#PCDATA)>
+<!ELEMENT DCR_Listing (#PCDATA)>
+<!ELEMENT Division_Conference_Records ( DCR_Listing* )>
+<!ELEMENT PS_Note (#PCDATA)>
+<!ELEMENT Title ( ( Matchup_Info | Playoff_Series | Head_To_Head_Record | Playoff_Series_Records | Home_Record | Away_Record | Division_Conference_Records )+ )>
+<!ELEMENT time_stamp (#PCDATA)>
+<!ELEMENT message ( ( XML_File_ID, heading, category, sport, game_id, schedule_id, Title, time_stamp ) )>
+
+<!ATTLIST HTH_Listing HTH_Season CDATA #REQUIRED>
+<!ATTLIST PSR_Listing PSR_Season CDATA #REQUIRED>
+<!ATTLIST Playoff_Series_Records PSR_Series_Record CDATA #REQUIRED>
+<!ATTLIST DCR_Listing DCR_Record_Type CDATA #REQUIRED>
+<!ATTLIST Title Report_Type CDATA #REQUIRED>
+<!ATTLIST Title Value CDATA #REQUIRED>
diff --git a/test/xml/gameinfo/NBA_Playoff_Matchup_XML.xml b/test/xml/gameinfo/NBA_Playoff_Matchup_XML.xml
new file mode 100644 (file)
index 0000000..623af14
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no" ?>\r<!DOCTYPE message PUBLIC "-//TSN//DTD Statistics 1.0/EN" "NBA_Playoff_Matchup_XML.dtd">\r<message>\r<XML_File_ID>21189667</XML_File_ID>\r<heading>ACX%MATCHUP-POFF-OKC-SAN</heading>\r<category>Statistics</category>\r<sport>NBA</sport>\r<game_id>19760</game_id>\r<schedule_id>19760</schedule_id>\r<Title Report_Type="Matchup" Value="NBA Playoff Matchup - Oklahoma City vs. San Antonio">\r<Matchup_Info>\r(2) Oklahoma City Thunder (59-23) vs. (1) San Antonio Spurs (62-20)\r</Matchup_Info>\r<Playoff_Series>\r<PS_Listing>\rGame One - San Antonio 122, Oklahoma City 105\r</PS_Listing>\r<PS_Listing>\rGame Two - San Antonio 112, Oklahoma City 77\r</PS_Listing>\r<PS_Listing>\rGame Three - Oklahoma City 106, San Antonio 97\r</PS_Listing>\r<PS_Listing>\rGame Four - Oklahoma City 105, San Antonio 92\r</PS_Listing>\r<PS_Listing>\rGame Five - Thursday, May 29th - Oklahoma City at San Antonio, 9 p.m.\r</PS_Listing>\r<PS_Listing>\rGame Six - Saturday, May 31st - San Antonio at Oklahoma City, 8:30 p.m.\r</PS_Listing>\r<PS_Listing>\r*Game Seven - Monday, June 2nd - Oklahoma City at San Antonio, 9 p.m.\r</PS_Listing>\r<PS_Listing>\r(Best-of-seven series tied, 2-2)\r</PS_Listing>\r</Playoff_Series>\r<Head_To_Head_Record>\r<HTH_Listing HTH_Season="2013-14">Oklahoma City 4-0</HTH_Listing>\r<HTH_Listing HTH_Season="2012-13">Tied 2-2</HTH_Listing>\r<HTH_Listing HTH_Season="2011-12">San Antonio 2-1</HTH_Listing>\r<HTH_Listing HTH_Season="2010-11">San Antonio 3-0</HTH_Listing>\r<HTH_Listing HTH_Season="Overall">San Antonio 84-69</HTH_Listing>\r</Head_To_Head_Record>\r<Playoff_Series_Records PSR_Series_Record="San Antonio 3-1">\r<PSR_Listing PSR_Season="1982">San Antonio wins series, 4-1</PSR_Listing>\r<PSR_Listing PSR_Season="2002">San Antonio wins series, 3-2</PSR_Listing>\r<PSR_Listing PSR_Season="2005">San Antonio wins series, 4-2</PSR_Listing>\r<PSR_Listing PSR_Season="2012">Oklahoma City wins series, 4-2</PSR_Listing>\r</Playoff_Series_Records>\r<Home_Record>Oklahoma City 34-7; San Antonio 32-9</Home_Record>\r<Away_Record>Oklahoma City 25-16; San Antonio 30-11</Away_Record>\r<Division_Conference_Records>\r<DCR_Listing DCR_Record_Type="Southwest Division">Oklahoma City 13-5</DCR_Listing>\r<DCR_Listing DCR_Record_Type="Northwest Division">San Antonio 11-7</DCR_Listing>\r<DCR_Listing DCR_Record_Type="Western Conference">Oklahoma City 36-16; San Antonio 38-14</DCR_Listing>\r</Division_Conference_Records>\r<Playoff_Series>\r<PS_Listing>\rPer Game     Percentage   Percentage  Turnovers Per Game\r</PS_Listing>\r<PS_Listing>\rTeam              Own    Opp    Own   Opp    Own   Opp    Own   Opp  Margin\r</PS_Listing>\r<PS_Listing>\rOklahoma City   106.2   99.8   .471  .436   .361  .358   15.3  15.2    -.1\r</PS_Listing>\r<PS_Listing>\rSan Antonio     105.4   97.6   .486  .444   .397  .353   14.4  13.9    -.5\r</PS_Listing>\r<PS_Listing>\rUnder 100 Pts   OT      3 Pts      10 Pts\r</PS_Listing>\r<PS_Listing>\rRebound Pct    Own    Opp   Games   or Less     or More\r</PS_Listing>\r<PS_Listing>\rTeam             Off   Def   Tot  W-L    W-L    W-L      W-L         W-L\r</PS_Listing>\r<PS_Listing>\rOklahoma City   .265  .756  .510  9-11  41-4    3-1     10-4        33-8\r</PS_Listing>\r<PS_Listing>\rSan Antonio     .227  .764  .495 10-10  39-3    2-0      7-0        35-12\r</PS_Listing>\r<PS_Listing>\r2013-2014 Meetings\r</PS_Listing>\r<PS_Listing>\r------------------\r</PS_Listing>\r<PS_Listing>\r11/27 - Oklahoma City, 94-88 (at Okla City)\r</PS_Listing>\r<PS_Listing>\r12/21 - Oklahoma City, 113-100 (at San)\r</PS_Listing>\r<PS_Listing>\r01/22 - Oklahoma City, 111-105 (at San)\r</PS_Listing>\r<PS_Listing>\r04/03 - Oklahoma City, 106-94 (at Okla City)\r</PS_Listing>\r<PS_Listing>\r2012-2013 Meetings\r</PS_Listing>\r<PS_Listing>\r------------------\r</PS_Listing>\r<PS_Listing>\r11/01 - San Antonio, 86-84 (at San)\r</PS_Listing>\r<PS_Listing>\r12/17 - Oklahoma City, 107-93 (at Okla City)\r</PS_Listing>\r<PS_Listing>\r03/11 - San Antonio, 105-93 (at San)\r</PS_Listing>\r<PS_Listing>\r04/04 - Oklahoma City, 100-88 (at Okla City)\r</PS_Listing>\r<PS_Listing>\r2011-2012 Meetings\r</PS_Listing>\r<PS_Listing>\r------------------\r</PS_Listing>\r<PS_Listing>\r01/08 - Oklahoma City, 108-96 (at Okla City)\r</PS_Listing>\r<PS_Listing>\r02/04 - San Antonio, 107-96 (at San)\r</PS_Listing>\r<PS_Listing>\r03/16 - San Antonio, 114-105 (at Okla City)\r</PS_Listing>\r<PS_Listing>\r2010-2011 Meetings\r</PS_Listing>\r<PS_Listing>\r------------------\r</PS_Listing>\r<PS_Listing>\r11/14 - San Antonio, 117-104 (at Okla City)\r</PS_Listing>\r<PS_Listing>\r01/01 - San Antonio, 101-74 (at San)\r</PS_Listing>\r<PS_Listing>\r02/23 - San Antonio, 109-105 (at San)\r</PS_Listing>\r<PS_Listing>\r2009-2010 Meetings\r</PS_Listing>\r<PS_Listing>\r------------------\r</PS_Listing>\r<PS_Listing>\r11/14 - Oklahoma City, 101-98 (at San)\r</PS_Listing>\r<PS_Listing>\r01/13 - San Antonio, 109-108 ot (at Okla City)\r</PS_Listing>\r<PS_Listing>\r02/24 - San Antonio, 95-87 (at San)\r</PS_Listing>\r<PS_Listing>\r03/22 - San Antonio, 99-96 (at Okla City)\r</PS_Listing>\r<PS_Listing>\r2008-2009 Meetings\r</PS_Listing>\r<PS_Listing>\r------------------\r</PS_Listing>\r<PS_Listing>\r12/14 - San Antonio, 109-104 (at San)\r</PS_Listing>\r<PS_Listing>\r03/16 - Oklahoma City, 78-76 (at Okla City)\r</PS_Listing>\r<PS_Listing>\r03/31 - Oklahoma City, 96-95 (at San)\r</PS_Listing>\r<PS_Listing>\r04/07 - San Antonio, 99-89 (at Okla City)\r</PS_Listing>\r<PS_Listing>\r2007-2008 Meetings\r</PS_Listing>\r<PS_Listing>\r------------------\r</PS_Listing>\r<PS_Listing>\r11/25 - San Antonio, 116-101 (at Sea)\r</PS_Listing>\r<PS_Listing>\r01/29 - Seattle, 88-85 (at Sea)\r</PS_Listing>\r<PS_Listing>\r04/11 - San Antonio, 95-74 (at San)\r</PS_Listing>\r<PS_Listing>\r2006-2007 Meetings\r</PS_Listing>\r<PS_Listing>\r------------------\r</PS_Listing>\r<PS_Listing>\r11/26 - San Antonio, 98-78 (at Sea)\r</PS_Listing>\r<PS_Listing>\r02/24 - San Antonio, 102-71 (at San)\r</PS_Listing>\r<PS_Listing>\r03/25 - San Antonio, 120-79 (at Sea)\r</PS_Listing>\r<PS_Listing>\r04/03 - San Antonio, 110-91 (at San)\r</PS_Listing>\r<PS_Listing>\r2005-2006 Meetings\r</PS_Listing>\r<PS_Listing>\r------------------\r</PS_Listing>\r<PS_Listing>\r02/21 - San Antonio, 103-78 (at San)\r</PS_Listing>\r<PS_Listing>\r03/26 - Seattle, 106-102 (at Sea)\r</PS_Listing>\r<PS_Listing>\r04/11 - San Antonio, 104-95 (at San)\r</PS_Listing>\r<PS_Listing>\r2004-2005 Meetings\r</PS_Listing>\r<PS_Listing>\r------------------\r</PS_Listing>\r<PS_Listing>\r11/07 - Seattle, 113-94 (at Sea)\r</PS_Listing>\r<PS_Listing>\r12/08 - Seattle, 102-96 (at San)\r</PS_Listing>\r<PS_Listing>\r01/31 - San Antonio, 103-84 (at Sea)\r</PS_Listing>\r<PS_Listing>\r03/30 - San Antonio, 89-76 (at San)\r</PS_Listing>\r<PS_Listing>\r2003-2004 Meetings\r</PS_Listing>\r<PS_Listing>\r------------------\r</PS_Listing>\r<PS_Listing>\r12/19 - San Antonio, 87-73 (at Sea)\r</PS_Listing>\r<PS_Listing>\r02/05 - San Antonio, 96-90 (at Sea)\r</PS_Listing>\r<PS_Listing>\r03/03 - San Antonio, 88-84 (at San)\r</PS_Listing>\r<PS_Listing>\r04/07 - San Antonio, 96-75 (at San)\r</PS_Listing>\r<PS_Listing>\r2002-2003 Meetings\r</PS_Listing>\r<PS_Listing>\r------------------\r</PS_Listing>\r<PS_Listing>\r11/24 - Seattle, 91-90 (at San)\r</PS_Listing>\r<PS_Listing>\r12/18 - San Antonio, 91-88 (at Sea)\r</PS_Listing>\r<PS_Listing>\r01/08 - San Antonio, 106-95 (at Sea)\r</PS_Listing>\r<PS_Listing>\r04/11 - San Antonio, 94-86 (at San)\r</PS_Listing>\r<PS_Listing>\rNote - The Oklahoma City Thunder were formerly the Seattle SuperSonics.\r</PS_Listing>\r<PS_Listing>\rNote - Oklahoma City has won five straight and six of the last seven meetings.\r</PS_Listing>\r<PS_Listing>\rNote - Oklahoma City has won seven of the last 11 meetings.\r</PS_Listing>\r<PS_Listing>\rNote - San Antonio has won 10 of 17 and 11 of the last 19 meetings.\r</PS_Listing>\r<PS_Listing>\rNote - San Antonio has won 13 of 23 and 19 of the last 30 meetings.\r</PS_Listing>\r<PS_Listing>\rNote - Oklahoma City has won two straight after losing its last six at San Ant.\r</PS_Listing>\r<PS_Listing>\rNote - Oklahoma City has lost 13 of 17 and 16 of its last 21 at San Antonio.\r</PS_Listing>\r<PS_Listing>\rNote - San Ant has lost four straight and five of its last six at Okla City.\r</PS_Listing>\r<PS_Listing>\rNote - These two teams have split the last 10 meetings at Okla City/Seattle.\r</PS_Listing>\r<PS_Listing>\rNote - San Antonio has lost seven of the last 12 road meetings.\r</PS_Listing>\r<PS_Listing>\rNote - San Antonio has won eight of the last 15 road meetings.\r</PS_Listing>\r<PS_Listing>\rOklahoma City last 17 games              San Antonio last 17 games\r</PS_Listing>\r<PS_Listing>\r---------------------------              -------------------------\r</PS_Listing>\r<PS_Listing>\r04/19 - W vs. Memphis, 100-86 POFF       04/16 - L vs. LA Lakers, 100-113\r</PS_Listing>\r<PS_Listing>\r04/21 - L vs. Memphis, 105-111 (OT) POFF 04/20 - W vs. Dallas, 90-85 POFF\r</PS_Listing>\r<PS_Listing>\r04/24 - L at  Memphis, 95-98 (OT) POFF   04/23 - L vs. Dallas, 92-113 POFF\r</PS_Listing>\r<PS_Listing>\r04/26 - W at  Memphis, 92-89 (OT) POFF   04/26 - L at  Dallas, 108-109 POFF\r</PS_Listing>\r<PS_Listing>\r04/29 - L vs. Memphis, 99-100 (OT) POFF  04/28 - W at  Dallas, 93-89 POFF\r</PS_Listing>\r<PS_Listing>\r05/01 - W at  Memphis, 104-84 POFF       04/30 - W vs. Dallas, 109-103 POFF\r</PS_Listing>\r<PS_Listing>\r05/03 - W vs. Memphis, 120-109 POFF      05/02 - L at  Dallas, 111-113 POFF\r</PS_Listing>\r<PS_Listing>\r05/05 - L vs. LA Clippers, 105-122 POFF  05/04 - W vs. Dallas, 119-96 POFF\r</PS_Listing>\r<PS_Listing>\r05/07 - W vs. LA Clippers, 112-101 POFF  05/06 - W vs. Portland, 116-92 POFF\r</PS_Listing>\r<PS_Listing>\r05/09 - W at  LA Clippers, 118-112 POFF  05/08 - W vs. Portland, 114-97 POFF\r</PS_Listing>\r<PS_Listing>\r05/11 - L at  LA Clippers, 99-101 POFF   05/10 - W at  Portland, 118-103 POFF\r</PS_Listing>\r<PS_Listing>\r05/13 - W vs. LA Clippers, 105-104 POFF  05/12 - L at  Portland, 92-103 POFF\r</PS_Listing>\r<PS_Listing>\r05/15 - W at  LA Clippers, 104-98 POFF   05/14 - W vs. Portland, 104-82 POFF\r</PS_Listing>\r<PS_Listing>\r05/19 - L at  San Antonio, 105-122 POFF  05/19 - W vs. Okla City, 122-105 POFF\r</PS_Listing>\r<PS_Listing>\r05/21 - L at  San Antonio, 77-112 POFF   05/21 - W vs. Okla City, 112-77 POFF\r</PS_Listing>\r<PS_Listing>\r05/25 - W vs. San Antonio, 106-97 POFF   05/25 - L at  Okla City, 97-106 POFF\r</PS_Listing>\r<PS_Listing>\r05/27 - W vs. San Antonio, 105-92 POFF   05/27 - L at  Okla City, 92-105 POFF\r</PS_Listing>\r<PS_Listing>\rNote - All statistics are regular season except where noted.\r</PS_Listing>\r<PS_Note>Note - * - If necessary.</PS_Note>\r<PS_Listing>\r05/29 12:22:17 ET\r</PS_Listing>\r</Playoff_Series>\r</Title>\r<time_stamp> May 29, 2014, at 12:24 PM ET </time_stamp>\r</message>\r
\ No newline at end of file
diff --git a/test/xml/gameinfo/mlbpreviewxml.dtd b/test/xml/gameinfo/mlbpreviewxml.dtd
new file mode 100644 (file)
index 0000000..dc4aac1
--- /dev/null
@@ -0,0 +1,24 @@
+<!ELEMENT XML_File_ID (#PCDATA)>
+<!ELEMENT heading (#PCDATA)>
+<!ELEMENT game_id (#PCDATA)>
+<!ELEMENT schedule_id (#PCDATA)>
+<!ELEMENT category (#PCDATA)>
+<!ELEMENT sport (#PCDATA)>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT Game_Date (#PCDATA)>
+<!ELEMENT Game_Time (#PCDATA)>
+<!ELEMENT vteam (#PCDATA)>
+<!ELEMENT hteam (#PCDATA)>
+<!ELEMENT visitorprob (#PCDATA)>
+<!ELEMENT homeprob (#PCDATA)>
+<!ELEMENT P (#PCDATA)>
+<!ELEMENT body ( P* )>
+<!ELEMENT time_stamp (#PCDATA)>
+<!ELEMENT message ( ( XML_File_ID, heading, game_id, schedule_id, category, sport, title, Game_Date, Game_Time, vteam, hteam, visitorprob, homeprob, body, time_stamp ) )>
+
+<!ATTLIST vteam id CDATA #REQUIRED>
+<!ATTLIST hteam id CDATA #REQUIRED>
+<!ATTLIST visitorprob record CDATA #REQUIRED>
+<!ATTLIST visitorprob ERA CDATA #REQUIRED>
+<!ATTLIST homeprob record CDATA #REQUIRED>
+<!ATTLIST homeprob ERA CDATA #REQUIRED>
diff --git a/test/xml/gameinfo/mlbpreviewxml.xml b/test/xml/gameinfo/mlbpreviewxml.xml
new file mode 100644 (file)
index 0000000..3f56f95
--- /dev/null
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!DOCTYPE message PUBLIC "-//TSN//DTD Preview 1.0/EN" "mlbpreviewxml.dtd">\r
+<message>\r
+<XML_File_ID>16451229</XML_File_ID>\r
+<heading>AAV!PREVIEW-STL-PIT</heading>\r
+<game_id>34056</game_id>\r
+<schedule_id>34056</schedule_id>\r
+<category>Previews</category>\r
+<sport>MLB</sport>\r
+<title>\r
+St. Louis Cardinals (71-57) at Pittsburgh Pirates (68-60), 7:05 p.m. (ET)\r
+</title>\r
+<Game_Date>08/28/2012</Game_Date>\r
+<Game_Time>07:05 PM</Game_Time>\r
+<vteam id="012">St. Louis</vteam>\r
+<hteam id="009">Pittsburgh</hteam>\r
+<visitorprob record="13-9" ERA="3.67">St. Louis  - Jake Westbrook</visitorprob>\r
+<homeprob record="11-6" ERA="3.73">Pittsburgh - James McDonald</homeprob>\r
+<body>\r
\r
+<P>\r
+ (Sports Network) - Pittsburgh Pirates starter James McDonald followed up one\r
+ his better starts this year -- a win over the St. Louis Cardinals -- with a\r
+ forgettable beginning to his most recent outing.\r
\r
+</P>\r
+<P>\r
+ McDonald tries to get off on a better foot on Tuesday evening and get the\r
+ Pirates back on track as they to avoid falling further behind the Cardinals in\r
+ the standings.\r
\r
+</P>\r
+<P>\r
+ The right-handed McDonald gets the call for the second contest of this three-\r
+ game set between NL Central rivals having beaten the Cardinals back on Aug.\r
+ 17. However, it is the only win for the Pirates hurler in his last six starts.\r
\r
+</P>\r
+<P>\r
+ McDonald logged six scoreless innings in the win over St. Louis, scattering\r
+ two hits and walking three with seven strikeouts to claim a 2-1 decision.\r
+ After reliever Chris Resop allowed a run and two hits in two-thirds of an\r
+ inning, Juan Cruz, Jason Grilli and Joel Hanrahan combined to toss 2 1/3\r
+ hitless innings.\r
\r
+</P>\r
+<P>\r
+ The 27-year-old struggled in his last outing on Wednesday against the San\r
+ Diego Padres, giving up four runs on five hits and five walks with only two\r
+ strikeouts in five innings. Three of the runs McDonald allowed came in the\r
+ first, when he walked the bases loaded.\r
\r
+</P>\r
+<P>\r
+ "I felt like I was getting better as the game went on," said McDonald. "I was\r
+ able to get my breaking ball down, my fastball was going where I wanted it to.\r
+ Just a rough beginning but I felt like I ended strong."\r
\r
+</P>\r
+<P>\r
+ McDonald is still a solid 11-6 with a 3.73 earned run average in 25 games this\r
+ season and 3-1 with a 2.76 ERA in nine career meetings with the Cardinals,\r
+ including five starts.\r
\r
+</P>\r
+<P>\r
+ St. Louis starter Jake Westbrook took a tough-luck loss when he squared off\r
+ against McDonald, then saw his offense bail him out in a victory last week.\r
\r
+</P>\r
+<P>\r
+ Against the Pirates, Westbrook had a five-start winning streak end even though\r
+ he gave up just two runs -- one earned -- over 7 2/3 frames.\r
\r
+</P>\r
+<P>\r
+ The righty quickly returned to the win column on Thursday against the Houston\r
+ Astros despite yielding five runs over five innings. He got plenty of support\r
+ in a 13-5 win.\r
\r
+</P>\r
+<P>\r
+ Westbrook, 34, improved to 13-9 with a 3.67 ERA in 25 starts this season, but\r
+ sits at just 1-6 lifetime versus the Pirates in 12 meetings (8 starts).\r
\r
+</P>\r
+<P>\r
+ The Cardinals took the opener of the set on Monday by a 4-3 margin, with Matt\r
+ Holliday hitting a go-ahead solo homer in the sixth inning.\r
\r
+</P>\r
+<P>\r
+ "I like opposite-field home runs. It means my swing is in a good spot,"\r
+ Holliday said after driving in his NL high-tying 90th run of the season.\r
\r
+</P>\r
+<P>\r
+ The Cardinals have now won six of seven since losing a 19-inning game to the\r
+ Pirates on Aug. 19. That has them six games behind the Cincinnati Reds for\r
+ first place in the NL Central and 2 1/2 games up on the Los Angeles Dodgers\r
+ for the league's second wild card position.\r
\r
+</P>\r
+<P>\r
+ The Pirates, meanwhile, have lost six of seven since their marathon win and\r
+ are three games back of the Cardinals.\r
\r
+</P>\r
+<P>\r
+ A.J. Burnett suffered Monday's loss after allowing four runs -- three earned\r
+ -- on seven hits in 5 2/3 innings.\r
\r
+</P>\r
+<P>\r
+ "I wasn't able to have shutdown innings," Burnett said.\r
\r
+</P>\r
+<P>\r
+ Andrew McCutchen drove in a run for the Pirates, who were without second\r
+ baseman Neil Walker after he was a late scratch due to lower back tightness.\r
\r
+</P>\r
+<P>\r
+ The Cardinals, meanwhile, could have third baseman David Freese back in the\r
+ lineup tonight for the first time since he hurt his left wrist on Friday.\r
\r
+</P>\r
+<P>\r
+ The Pirates and Cardinals split 12 meetings this season prior to this series.\r
\r
+</P>\r
\r
+</body>\r
+<time_stamp> August 28, 2012, at 10:41 AM ET </time_stamp>\r
+</message>\r
diff --git a/test/xml/gameinfo/nbapreviewxml.dtd b/test/xml/gameinfo/nbapreviewxml.dtd
new file mode 100644 (file)
index 0000000..714cfc3
--- /dev/null
@@ -0,0 +1,18 @@
+<!ELEMENT XML_File_ID (#PCDATA)>
+<!ELEMENT heading (#PCDATA)>
+<!ELEMENT game_id (#PCDATA)>
+<!ELEMENT schedule_id (#PCDATA)>
+<!ELEMENT category (#PCDATA)>
+<!ELEMENT sport (#PCDATA)>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT Game_Date (#PCDATA)>
+<!ELEMENT Game_Time (#PCDATA)>
+<!ELEMENT vteam (#PCDATA)>
+<!ELEMENT hteam (#PCDATA)>
+<!ELEMENT P (#PCDATA)>
+<!ELEMENT body ( P* )>
+<!ELEMENT time_stamp (#PCDATA)>
+<!ELEMENT message ( ( XML_File_ID, heading, game_id, schedule_id, category, sport, title, Game_Date, Game_Time, vteam, hteam, body, time_stamp ) )>
+
+<!ATTLIST vteam id CDATA #REQUIRED>
+<!ATTLIST hteam id CDATA #REQUIRED>
diff --git a/test/xml/gameinfo/nbapreviewxml.xml b/test/xml/gameinfo/nbapreviewxml.xml
new file mode 100644 (file)
index 0000000..e7d8c4d
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no" ?>\r<!DOCTYPE message PUBLIC "-//TSN//DTD Preview 1.0/EN" "nbapreviewxml.dtd">\r<message>\r<XML_File_ID>21167166</XML_File_ID>\r<heading>ACV!PREVIEW-SAN-OKC</heading>\r<game_id>19762</game_id>\r<schedule_id>19762</schedule_id>\r<category>Previews</category>\r<sport>NBA</sport>\r<title>\r(1) San Antonio Spurs (2-0) at (2) Oklahoma City Thunder (0-2), 8:30 p.m. (ET)\r</title>\r<Game_Date>05/25/2014</Game_Date>\r<Game_Time>08:30 PM</Game_Time>\r<vteam id="110">San Antonio</vteam>\r<hteam id="111">Oklahoma City</hteam>\r<body>\r<P>\r (SportsNetwork.com) - The Oklahoma City Thunder will try to make it a\r competitive series against the San Antonio Spurs Sunday night when Game 3 of\r the Western Conference finals shifts to Chesapeake Energy Arena.\r \r</P>\r<P>\r The Thunder badly need a lift and they may get one on Sunday.\r \r</P>\r<P>\r Serge Ibaka, who missed the first two games and was expected to miss the\r entire postseason with a calf strain, improved significantly and has been\r upgraded to "day-to-day."\r \r</P>\r<P>\r "The abundance of blood and therefore swelling in Serge's calf has reduced\r substantially and unexpectedly, allowing a level of movement and stability not\r thought possible after the initial diagnosis," OKC general manager Sam Presti\r said in a release. "With this new information, and in an effort to keep his\r status current, we are now listing him as day-to-day with the understanding\r that there is a possibility for him to play in this series."\r \r</P>\r<P>\r "I'm waiting what the doctor going to tell me and how my body going to feel,"\r Ibaka said after Saturday's practice, acknowledging pain is more of a concern\r than further injury.\r \r</P>\r<P>\r Oklahoma City desperately needs him.\r \r</P>\r<P>\r The Spurs marched to a 2-0 series lead and have done so in convincing fashion.\r San Antonio has won the two games by an average of 26 points, thanks in large\r part to Wednesday's 112-77 drubbing in Game 2.\r \r</P>\r<P>\r Tim Duncan, Tony Parker and Manu Ginobili made history on Wednesday night and\r led the Spurs to another win. San Antonio's Big 3 combined for 47 points and\r the trio passed Magic Johnson, Kareem Abdul-Jabbar and Michael Cooper as the\r all-time winningest trio in NBA playoff history, winning their 111th\r postseason game together.\r \r</P>\r<P>\r Parker scored a game-high 22 points, Duncan went for 14 with 12 rebounds and\r Ginobili added 11 points off the bench in the blowout, as the Spurs leave the\r comfy confines of AT&amp;T Center for Oklahoma City.\r \r</P>\r<P>\r In league history, 94 percent of teams to open a seven-game set 2-0 have\r gone on to advance.\r \r</P>\r<P>\r The Spurs sadly know all about the six percent.\r \r</P>\r<P>\r San Antonio held this exact margin in the 2012 Western Conference finals\r against Oklahoma City, only to lose the next four and watch the Thunder lose\r to the Miami Heat in the NBA Finals.\r \r</P>\r<P>\r "We know what we're walking into," Duncan said. "They're so much better at\r home. They're going to have a lot of days to let it all fester."\r \r</P>\r<P>\r Duncan also racked up just under 29 minutes, passing Abdul-Jabbar for second\r most playoff minutes in league history in the process. Duncan is just 27\r minutes back of Kobe Bryant's all-time mark of 8,641 and barring injury will\r pass him later in this series.\r \r</P>\r<P>\r Danny Green made 7-of-10 from 3-point range for the Spurs, who won Monday's\r Game 1, 122-105. He finished with 21 and Boris Diaw was the other San Antonio\r player in double figures with 11.\r \r</P>\r<P>\r Kevin Durant and Russell Westbrook didn't do nearly enough to make up for\r Ibaka's absence. The MVP and his electric point guard netted just 15 points\r apiece on 16 and 24 shots, respectively. The other three OKC starters only\r scored four points between them.\r \r</P>\r<P>\r "We're disappointed in our performance. We have to make a few adjustments and\r come back better," Thunder head coach Scott Brooks said. "We will continue to\r figure things out as a group like we always have done and come back Sunday and\r play a much better basketball game."\r \r</P>\r<P>\r The Thunder led 26-24 after the first quarter but were outscored 88-51 the\r rest of the way.\r \r</P>\r<P>\r The poor play has led to some blowups on the floor for OKC. At the end of the\r first half, when the game started getting out of hand for the Thunder, prior\r to a timeout, Westbrook and Durant got into a heated exchange.\r \r</P>\r<P>\r "I was just getting on Kevin about some stuff and he got on me right back,"\r explained Westbrook. "And that's what teammates do. That's what leaders do. We\r get on each other, we come back and we talk about it, and then we come out\r like nothing ever happened."\r \r</P>\r<P>\r The two have combined to shoot 35-for-80 from the field in the first two\r games. Westbrook has taken 10 more shots than the league MVP.\r \r</P>\r<P>\r Game 4 will be Tuesday night in Oklahoma City.\r \r</P>\r \r \r \r \r \r</body>\r<time_stamp>May 25, 2014, at 10:18 AM ET</time_stamp>\r</message>\r
\ No newline at end of file
diff --git a/test/xml/gameinfo/nhlpreviewxml.dtd b/test/xml/gameinfo/nhlpreviewxml.dtd
new file mode 100644 (file)
index 0000000..714cfc3
--- /dev/null
@@ -0,0 +1,18 @@
+<!ELEMENT XML_File_ID (#PCDATA)>
+<!ELEMENT heading (#PCDATA)>
+<!ELEMENT game_id (#PCDATA)>
+<!ELEMENT schedule_id (#PCDATA)>
+<!ELEMENT category (#PCDATA)>
+<!ELEMENT sport (#PCDATA)>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT Game_Date (#PCDATA)>
+<!ELEMENT Game_Time (#PCDATA)>
+<!ELEMENT vteam (#PCDATA)>
+<!ELEMENT hteam (#PCDATA)>
+<!ELEMENT P (#PCDATA)>
+<!ELEMENT body ( P* )>
+<!ELEMENT time_stamp (#PCDATA)>
+<!ELEMENT message ( ( XML_File_ID, heading, game_id, schedule_id, category, sport, title, Game_Date, Game_Time, vteam, hteam, body, time_stamp ) )>
+
+<!ATTLIST vteam id CDATA #REQUIRED>
+<!ATTLIST hteam id CDATA #REQUIRED>
diff --git a/test/xml/gameinfo/nhlpreviewxml.xml b/test/xml/gameinfo/nhlpreviewxml.xml
new file mode 100644 (file)
index 0000000..1803ed7
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no" ?>\r<!DOCTYPE message PUBLIC "-//TSN//DTD Preview 1.0/EN" "nhlpreviewxml.dtd">\r<message>\r<XML_File_ID>21193847</XML_File_ID>\r<heading>ADV!PREVIEW-CHI-LOS</heading>\r<game_id>19153</game_id>\r<schedule_id>19153</schedule_id>\r<category>Previews</category>\r<sport>NHL</sport>\r<title>\rChicago Blackhawks (2-3) at Los Angeles Kings (3-2), 9 p.m. (ET)\r</title>\r<Game_Date>05/30/2014</Game_Date>\r<Game_Time>09:00 PM</Game_Time>\r<vteam id="124">Chicago</vteam>\r<hteam id="128">Los Angeles</hteam>\r<body>\r<P>\r (SportsNetwork.com) - The Chicago Blackhawks weren't ready to give up on their\r dreams of winning consecutive Stanley Cup titles the last time out. The\r defending champions hope to stay alive for a second straight time on Friday\r when they visit the Los Angeles Kings for Game 6 of the Western Conference\r finals.\r \r</P>\r<P>\r The Blackhawks are attempting to return to the Cup Finals after falling behind\r three games to one in this postseason battle against Los Angeles. The Kings,\r who lost in five games to Chicago in last spring's conference finals, couldn't\r close out the Hawks in their first attempt on Wednesday, dropping a 5-4\r double-overtime decision in the Windy City.\r \r</P>\r<P>\r Chicago, which is trying to become the first team to win consecutive titles\r since Detroit in 1997 and '98, improved to 8-1 as the host in these playoffs\r with the Game 5 triumph, but it will have to win its first road game of the\r series to keep on playing. The Kings won Game 3 at the Staples Center by a 4-3\r score and pushed their series lead to 3-1 with a 5-2 decision Monday night in\r the City of Angels.\r \r</P>\r<P>\r All told, Los Angeles is 5-3 as the host this postseason and is 19-7 in home\r playoff games since the start of the 2012 playoffs, when the Kings won their\r only Stanley Cup title.\r \r</P>\r<P>\r If the Blackhawks win Friday the clubs will meet Sunday evening in Chicago for\r a decisive Game 7.\r \r</P>\r<P>\r Michal Handzus, a former L.A. King, provided the OT heroics for Chicago on\r Wednesday, scoring at 2:04 of the second overtime to send the series back to\r the Staples Center. Brandon Saad held the puck along the right wing below the\r circles and dished ahead to Handzus, who controlled the disc for a second\r before lifting a backhander under the crossbar to end the contest.\r \r</P>\r<P>\r "Two guys went on him and I got open,"Handzus said of his linemate Saad. "I\r was surprised I got open like that but he waited and waited and gave me a\r great pass."\r \r</P>\r<P>\r For Handzus, it was his first career postseason overtime score, and just his\r second playoff game-winner after recording the only goal in a 1-0 Flyers\r victory against Ottawa in the 2003 second round.\r \r</P>\r<P>\r Saad ended up with a goal and two assists for the Blackhawks, who wasted a\r pair of early two-goal leads and fell behind by a goal before rallying to\r extend the series.\r \r</P>\r<P>\r "We don't want the season to end now. We're having too much fun playing," Saad\r admitted.\r \r</P>\r<P>\r Brent Seabrook, Johnny Oduya and Ben Smith also scored, while Patrick Kane\r notched a career playoff-high four helpers for Chicago. Kane became the first\r Blackhawk to assist on four goals in one playoff game since Steve Larmer did\r so on April 30, 1990 in a Norris Division final-clinching 8-2 rout of the St.\r Louis Blues .\r \r</P>\r<P>\r Kane hasn't scored a goal since getting the OT winner and series clincher in\r Game 6 of Chicago's second-round series against Minnesota, but the reigning\r Conn Smythe winner has posted five assists over the last two games.\r \r</P>\r<P>\r Corey Crawford looked shaky at times, but emerged with the win thanks to 40\r saves.\r \r</P>\r<P>\r On Thursday's off day, Blackhawks captain Jonathan Toews talked about keeping\r the pressure on Los Angeles from the start of tonight's battle.\r \r</P>\r<P>\r "We're going to work on getting our first win on the road against this team,"\r said Toews. "We want to stay with the mentality, that we're putting all the\r pressure on them. It's going to be tough for them to close it out and win that\r fourth game against us. We showed how resilient of a group we are last night.\r We're going to do it again."\r \r</P>\r<P>\r Dustin Brown, Marian Gaborik, Jarret Stoll and Tanner Pearson lit the lamp for\r L.A. Pearson's tally extended his point streak to six games, matching\r the Kings' postseason record for a rookie along with Warren Rychel (1993) and\r Daryl Evans (1982).\r \r</P>\r<P>\r L.A. has the comfort of home ice on Friday to try and reach the\r Stanley Cup Finals for the second time in the last three seasons, but the club\r knows the fourth win of a series can be extremely hard to come by.\r \r</P>\r<P>\r "If anyone thinks that it's easy ... it's not easy," Kings forward Justin\r Williams said of closing out an opponent in the third round. "Attaining your\r ultimate goal is never easy and we're going to do our best to get it done."\r \r</P>\r<P>\r Jonathan Quick took the loss despite stopping 40 pucks.\r \r</P>\r<P>\r Kane had a hand in all three Blackhawk scores in the opening 20 minutes on\r Wednesday before notching the secondary assist on Handzus' winner. However,\r after going up by scores of 2-0 and 3-1 in the opening period, the Blackhawks\r found themselves down 4-3 heading into the final stanza of regulation, but\r Smith scored early in the third to even things.\r \r</P>\r<P>\r Saad fired a low shot from the left wing that was kicked aside by Quick, but\r Smith beat his checker and potted the rebound for a 4-4 game just 77 seconds\r into the third period. The Blackhawks had a prime chance to win in regulation\r when Stoll committed a tripping infraction with 3:11 on the clock. Quick made\r two acrobatic stops, one from Kane and the rebound on Bryan Bickell early in\r the advantage and added two more before its completion.\r \r</P>\r<P>\r Acting on adrenaline and instinct, the first overtime featured a dozen quality\r chances split between the clubs. Los Angeles claimed a 10-8 shot edge in a\r briskly-paced fourth period.\r \r</P>\r<P>\r "Overtime, I've seen a lot of games, been involved in a lot of those," said\r Chicago head coach Joel Quenneville. "That might have been the greatest\r overtime I've seen."\r \r</P>\r<P>\r The Blackhawks have come back from down 3-1 to win a series only once in their\r history, but it was last spring against Detroit, which won three of the first\r four games against Chicago in the Western Conference semifinals before\r losing the final three tilts. The Blackhawks also needed to win Game 7 in\r overtime to down the Red Wings.\r \r</P>\r \r \r \r \r \r \r \r \r</body>\r<time_stamp> May 30, 2014, at 10:33 AM ET </time_stamp>\r</message>\r
\ No newline at end of file
diff --git a/test/xml/gameinfo/recapxml.dtd b/test/xml/gameinfo/recapxml.dtd
new file mode 100644 (file)
index 0000000..b2c379e
--- /dev/null
@@ -0,0 +1,17 @@
+<!ELEMENT XML_File_ID (#PCDATA)>
+<!ELEMENT heading (#PCDATA)>
+<!ELEMENT game_id (#PCDATA)>
+<!ELEMENT schedule_id (#PCDATA)>
+<!ELEMENT category (#PCDATA)>
+<!ELEMENT sport (#PCDATA)>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT vteam (#PCDATA)>
+<!ELEMENT vscore (#PCDATA)>
+<!ELEMENT hteam (#PCDATA)>
+<!ELEMENT hscore (#PCDATA)>
+<!ELEMENT final ( ( vteam, vscore, hteam, hscore ) )>
+<!ELEMENT P (#PCDATA)>
+<!ELEMENT body ( P* )>
+<!ELEMENT gamenotes (#PCDATA)>
+<!ELEMENT time_stamp (#PCDATA)>
+<!ELEMENT message ( ( XML_File_ID, heading, game_id, schedule_id, category, sport, title, final, body, gamenotes, time_stamp ) )>
diff --git a/test/xml/gameinfo/recapxml.xml b/test/xml/gameinfo/recapxml.xml
new file mode 100644 (file)
index 0000000..0ad6471
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no" ?>\r<!DOCTYPE message PUBLIC "-//TSN//DTD Recap 1.0/EN" "recapxml.dtd">\r<message>\r<XML_File_ID>21201550</XML_File_ID>\r<heading>AAD;RECAP-TEX-WAS</heading>\r<game_id>39978</game_id>\r<schedule_id>39978</schedule_id>\r<category>Recaps</category>\r<sport>MLB</sport>\r<title>MLB Game Summary - Texas at Washington</title>\r<final>\r<vteam>Texas</vteam><vscore>2</vscore>\r<hteam>Washington</hteam><hscore>10</hscore>\r</final>\r<body>\r<P>\r Washington,  DC (SportsNetwork.com) - Doug Fister tossed six solid innings and\r the  Washington Nationals hit  four home runs in a 10-2 victory over the Texas\r Rangers on Saturday.\r \r</P>\r<P>\r Anthony  Rendon, Scott Hairston, Adam LaRoche and Jose Lobaton homered for the\r Nationals,  who have won the first two contests of this three-game series by a\r combined score of 19-4. Rendon went 4-for-5 with three runs scored.\r \r</P>\r<P>\r Fister  (3-1) allowed two  runs on four hits while striking out six to win his\r third straight start.\r \r</P>\r<P>\r Mitch Moreland and Rougned Odor each knocked in a run for the Rangers, who saw\r starter  Nick Tepesch (2-1)  give up five runs -- four earned -- on seven hits\r over two innings.\r \r</P>\r<P>\r Rendon got Washington's offense going with a solo homer to left in the first\r inning.\r \r</P>\r<P>\r The  Nationals tacked  on four more runs in the second. Danny Espinosa doubled\r to  left-center  field and crossed  the plate on  Lobaton's home run to right-\r center  field.  With two outs,  Denard Span  singled to right-center field and\r Rendon  reached base  on  an infield  single. Both  runners  scored on  Jayson\r Werth's double to left that resulted in a Shin-Soo Choo fielding error.\r \r</P>\r<P>\r LaRoche's three-run homer in the fourth made it an 8-0 game.\r \r</P>\r<P>\r Texas finally got on the board in the fifth. Alex Rios walked, moved to second\r on Leonys Martin's groundout and raced home on Odor's bloop double to right.\r \r</P>\r<P>\r The  Rangers got another  run back in the sixth when Choo scored on Moreland's\r single to right-center field. Choo reached base on a double.\r \r</P>\r<P>\r But  the Nationals  hit another homer in  the bottom half of the sixth. Rendon\r singled and scored on pinch-hitter Hairston's homer inside the left-field foul\r pole. It was Hairston's first homer of the season.\r \r</P>\r \r</body>\r<gamenotes>\r Texas'  Scott Baker allowed five runs on five hits over five innings of relief\r ...  Washington  had 12 hits  ... The  Rangers are now  6-4 on an 11-game road\r trip ... Tepesch had won two straight decisions.\r</gamenotes>\r<time_stamp> May 31, 2014, at 03:13 PM ET </time_stamp>\r</message>\r
\ No newline at end of file