]> gitweb.michael.orlitzky.com - dead/htsn-import.git/commitdiff
Add SportInfo support for MLBPlateAppsXML.dtd.
authorMichael Orlitzky <michael@orlitzky.com>
Tue, 17 Jun 2014 14:47:28 +0000 (10:47 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Tue, 17 Jun 2014 14:47:28 +0000 (10:47 -0400)
doc/man1/htsn-import.1
schema/MLBPlateAppsXML.dtd [new file with mode: 0644]
schemagen/MLBPlateAppsXML/MLBPlateAppsXML.xml [new file with mode: 0644]
src/TSN/XML/SportInfo.hs
test/xml/sportinfo/MLBPlateAppsXML.dtd [new file with mode: 0644]
test/xml/sportinfo/MLBPlateAppsXML.xml [new file with mode: 0644]

index 426d18945d7207c79f8cfdcdc029e402c78cb26e..d0b2aa4c19952a426b8c0194e2641317ddff0e47 100644 (file)
@@ -200,6 +200,8 @@ MLBKORateXML.dtd
 mlbonbasepctxml.dtd
 .IP \[bu]
 MLBOPSXML.dtd
+.IP \[bu]
+MLBPlateAppsXML.dtd
 .RE
 .P
 The GameInfo and SportInfo types do not have their own top-level
diff --git a/schema/MLBPlateAppsXML.dtd b/schema/MLBPlateAppsXML.dtd
new file mode 100644 (file)
index 0000000..1621b18
--- /dev/null
@@ -0,0 +1,32 @@
+<!ELEMENT message  (XML_File_ID, heading , category , sport , title , Listing+ , time_stamp )>\r
+\r
+<!ELEMENT XML_File_ID  (#PCDATA )>\r
+\r
+<!ELEMENT heading  (#PCDATA )>\r
+\r
+<!ELEMENT category  (#PCDATA )>\r
+\r
+<!ELEMENT sport  (#PCDATA )>\r
+\r
+<!ELEMENT title  (#PCDATA )>\r
+\r
+<!ELEMENT Listing  (Rank , Name , PlateApps , AtBats , Walks , HitByPitch , SacFlies , Sacrifices )>\r
+\r
+<!ELEMENT Rank  (#PCDATA )>\r
+\r
+<!ELEMENT Name  (#PCDATA )>\r
+\r
+<!ELEMENT PlateApps  (#PCDATA )>\r
+\r
+<!ELEMENT AtBats  (#PCDATA )>\r
+\r
+<!ELEMENT Walks  (#PCDATA )>\r
+\r
+<!ELEMENT HitByPitch  (#PCDATA )>\r
+\r
+<!ELEMENT SacFlies  (#PCDATA )>\r
+\r
+<!ELEMENT Sacrifices  (#PCDATA )>\r
+\r
+<!ELEMENT time_stamp  (#PCDATA )>\r
+\r
diff --git a/schemagen/MLBPlateAppsXML/MLBPlateAppsXML.xml b/schemagen/MLBPlateAppsXML/MLBPlateAppsXML.xml
new file mode 100644 (file)
index 0000000..ffebee5
--- /dev/null
@@ -0,0 +1,410 @@
+<?xml version="1.0" standalone="no" ?>\r
+<!DOCTYPE message PUBLIC "-//TSN//DTD Statistics 1.0/EN" "MLBPlateAppsXML.dtd">\r
+<message>\r
+<XML_File_ID>81107117</XML_File_ID>\r
+<heading>AAX%AL-PLATEAPPS-LEADERS</heading>\r
+<category>Statistics</category>\r
+<sport>MLB</sport>\r
+<title>2002 AL Plate Appearance Leaders</title>\r
+<Listing>\r
+<Rank>1</Rank>\r
+<Name>Derek Jeter, NYY</Name>\r
+<PlateApps>358</PlateApps>\r
+<AtBats>319</AtBats>\r
+<Walks>33</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>2</Rank>\r
+<Name>Ichiro Suzuki, SEA</Name>\r
+<PlateApps>352</PlateApps>\r
+<AtBats>307</AtBats>\r
+<Walks>37</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>2</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>3</Rank>\r
+<Name>Alex Rodriguez, TEX</Name>\r
+<PlateApps>345</PlateApps>\r
+<AtBats>294</AtBats>\r
+<Walks>44</Walks>\r
+<HitByPitch>5</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>4</Rank>\r
+<Name>Alfonso Soriano, NYY</Name>\r
+<PlateApps>343</PlateApps>\r
+<AtBats>326</AtBats>\r
+<Walks>11</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>5</Rank>\r
+<Name>Jason Giambi, NYY</Name>\r
+<PlateApps>339</PlateApps>\r
+<AtBats>279</AtBats>\r
+<Walks>52</Walks>\r
+<HitByPitch>7</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>6</Rank>\r
+<Name>Bernie Williams, NYY</Name>\r
+<PlateApps>337</PlateApps>\r
+<AtBats>288</AtBats>\r
+<Walks>46</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Jacque Jones, MIN</Name>\r
+<PlateApps>337</PlateApps>\r
+<AtBats>308</AtBats>\r
+<Walks>21</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>5</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>8</Rank>\r
+<Name>Miguel Tejada, OAK</Name>\r
+<PlateApps>335</PlateApps>\r
+<AtBats>316</AtBats>\r
+<Walks>15</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>0</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>9</Rank>\r
+<Name>Garret Anderson, ANA</Name>\r
+<PlateApps>328</PlateApps>\r
+<AtBats>310</AtBats>\r
+<Walks>13</Walks>\r
+<HitByPitch>0</HitByPitch>\r
+<SacFlies>5</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Carlos Delgado, TOR</Name>\r
+<PlateApps>328</PlateApps>\r
+<AtBats>264</AtBats>\r
+<Walks>55</Walks>\r
+<HitByPitch>6</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>11</Rank>\r
+<Name>Cristian Guzman, MIN</Name>\r
+<PlateApps>327</PlateApps>\r
+<AtBats>311</AtBats>\r
+<Walks>6</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>4</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>12</Rank>\r
+<Name>Johnny Damon, BOS</Name>\r
+<PlateApps>326</PlateApps>\r
+<AtBats>292</AtBats>\r
+<Walks>27</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>13</Rank>\r
+<Name>Torii Hunter, MIN</Name>\r
+<PlateApps>325</PlateApps>\r
+<AtBats>300</AtBats>\r
+<Walks>21</Walks>\r
+<HitByPitch>1</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>John Olerud, SEA</Name>\r
+<PlateApps>325</PlateApps>\r
+<AtBats>267</AtBats>\r
+<Walks>51</Walks>\r
+<HitByPitch>1</HitByPitch>\r
+<SacFlies>6</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>15</Rank>\r
+<Name>Omar Vizquel, CLE</Name>\r
+<PlateApps>323</PlateApps>\r
+<AtBats>275</AtBats>\r
+<Walks>36</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>7</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>16</Rank>\r
+<Name>Carlos Beltran, KC</Name>\r
+<PlateApps>322</PlateApps>\r
+<AtBats>283</AtBats>\r
+<Walks>33</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>17</Rank>\r
+<Name>Randy Winn, TB</Name>\r
+<PlateApps>321</PlateApps>\r
+<AtBats>295</AtBats>\r
+<Walks>19</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>18</Rank>\r
+<Name>Jim Thome, CLE</Name>\r
+<PlateApps>319</PlateApps>\r
+<AtBats>251</AtBats>\r
+<Walks>60</Walks>\r
+<HitByPitch>5</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Troy Glaus, ANA</Name>\r
+<PlateApps>319</PlateApps>\r
+<AtBats>274</AtBats>\r
+<Walks>39</Walks>\r
+<HitByPitch>3</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Raul Mondesi, TOR</Name>\r
+<PlateApps>319</PlateApps>\r
+<AtBats>285</AtBats>\r
+<Walks>30</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Bret Boone, SEA</Name>\r
+<PlateApps>319</PlateApps>\r
+<AtBats>285</AtBats>\r
+<Walks>28</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>22</Rank>\r
+<Name>Nomar Garciaparra, BOS</Name>\r
+<PlateApps>316</PlateApps>\r
+<AtBats>288</AtBats>\r
+<Walks>20</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>6</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Shea Hillenbrand, BOS</Name>\r
+<PlateApps>316</PlateApps>\r
+<AtBats>297</AtBats>\r
+<Walks>11</Walks>\r
+<HitByPitch>6</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Paul Konerko, SOX</Name>\r
+<PlateApps>316</PlateApps>\r
+<AtBats>290</AtBats>\r
+<Walks>21</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>25</Rank>\r
+<Name>Neifi Perez, KC</Name>\r
+<PlateApps>315</PlateApps>\r
+<AtBats>300</AtBats>\r
+<Walks>8</Walks>\r
+<HitByPitch>0</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>3</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>26</Rank>\r
+<Name>Matt Lawton, CLE</Name>\r
+<PlateApps>312</PlateApps>\r
+<AtBats>266</AtBats>\r
+<Walks>41</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>0</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Jose Cruz, TOR</Name>\r
+<PlateApps>312</PlateApps>\r
+<AtBats>276</AtBats>\r
+<Walks>33</Walks>\r
+<HitByPitch>0</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>28</Rank>\r
+<Name>Frank Thomas, SOX</Name>\r
+<PlateApps>311</PlateApps>\r
+<AtBats>267</AtBats>\r
+<Walks>37</Walks>\r
+<HitByPitch>3</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>29</Rank>\r
+<Name>Tony Batista, BAL</Name>\r
+<PlateApps>310</PlateApps>\r
+<AtBats>276</AtBats>\r
+<Walks>24</Walks>\r
+<HitByPitch>6</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>30</Rank>\r
+<Name>Magglio Ordonez, SOX</Name>\r
+<PlateApps>309</PlateApps>\r
+<AtBats>281</AtBats>\r
+<Walks>27</Walks>\r
+<HitByPitch>0</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>31</Rank>\r
+<Name>Mike Sweeney, KC</Name>\r
+<PlateApps>308</PlateApps>\r
+<AtBats>272</AtBats>\r
+<Walks>30</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Mike Cameron, SEA</Name>\r
+<PlateApps>308</PlateApps>\r
+<AtBats>261</AtBats>\r
+<Walks>39</Walks>\r
+<HitByPitch>5</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>33</Rank>\r
+<Name>Darin Erstad, ANA</Name>\r
+<PlateApps>307</PlateApps>\r
+<AtBats>289</AtBats>\r
+<Walks>14</Walks>\r
+<HitByPitch>1</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Terrence Long, OAK</Name>\r
+<PlateApps>307</PlateApps>\r
+<AtBats>279</AtBats>\r
+<Walks>27</Walks>\r
+<HitByPitch>0</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>35</Rank>\r
+<Name>Melvin Mora, BAL</Name>\r
+<PlateApps>306</PlateApps>\r
+<AtBats>261</AtBats>\r
+<Walks>33</Walks>\r
+<HitByPitch>9</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>2</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Ray Durham, SOX</Name>\r
+<PlateApps>306</PlateApps>\r
+<AtBats>253</AtBats>\r
+<Walks>37</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>8</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>37</Rank>\r
+<Name>David Eckstein, ANA</Name>\r
+<PlateApps>305</PlateApps>\r
+<AtBats>262</AtBats>\r
+<Walks>25</Walks>\r
+<HitByPitch>9</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>6</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>38</Rank>\r
+<Name>Steve Cox, TB</Name>\r
+<PlateApps>303</PlateApps>\r
+<AtBats>278</AtBats>\r
+<Walks>20</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>39</Rank>\r
+<Name>Tim Salmon, ANA</Name>\r
+<PlateApps>302</PlateApps>\r
+<AtBats>260</AtBats>\r
+<Walks>36</Walks>\r
+<HitByPitch>3</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Kenny Lofton, SOX</Name>\r
+<PlateApps>302</PlateApps>\r
+<AtBats>261</AtBats>\r
+<Walks>37</Walks>\r
+<HitByPitch>0</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>3</Sacrifices>\r
+</Listing>\r
+<time_stamp> June 27, 2002, at 11:51 AM ET </time_stamp>\r
+</message>\r
index 82d1833888961838a8592c5cb82de0b74e01f436..9e87a3daf9015abfe32af8a9866f93c6b946cfcb 100644 (file)
@@ -117,7 +117,7 @@ dtds =
     "MLBKORateXML.dtd",
     "mlbonbasepctxml.dtd",
     "MLBOPSXML.dtd",
-    "MLBPlateAppsXML.dtd", -- no dtd
+    "MLBPlateAppsXML.dtd",
     "mlbrbisxml.dtd", -- no dtd
     "mlbrunsleadersxml.dtd", -- no dtd
     "MLBSacFliesXML.dtd", -- no dtd
@@ -361,7 +361,8 @@ sport_info_test_files =
     "MLBIntWalksXML.xml",
     "MLBKORateXML.xml",
     "mlbonbasepctxml.xml",
-    "MLBOPSXML.xml"
+    "MLBOPSXML.xml",
+    "MLBPlateAppsXML.xml"
   ]
 
 
diff --git a/test/xml/sportinfo/MLBPlateAppsXML.dtd b/test/xml/sportinfo/MLBPlateAppsXML.dtd
new file mode 100644 (file)
index 0000000..1621b18
--- /dev/null
@@ -0,0 +1,32 @@
+<!ELEMENT message  (XML_File_ID, heading , category , sport , title , Listing+ , time_stamp )>\r
+\r
+<!ELEMENT XML_File_ID  (#PCDATA )>\r
+\r
+<!ELEMENT heading  (#PCDATA )>\r
+\r
+<!ELEMENT category  (#PCDATA )>\r
+\r
+<!ELEMENT sport  (#PCDATA )>\r
+\r
+<!ELEMENT title  (#PCDATA )>\r
+\r
+<!ELEMENT Listing  (Rank , Name , PlateApps , AtBats , Walks , HitByPitch , SacFlies , Sacrifices )>\r
+\r
+<!ELEMENT Rank  (#PCDATA )>\r
+\r
+<!ELEMENT Name  (#PCDATA )>\r
+\r
+<!ELEMENT PlateApps  (#PCDATA )>\r
+\r
+<!ELEMENT AtBats  (#PCDATA )>\r
+\r
+<!ELEMENT Walks  (#PCDATA )>\r
+\r
+<!ELEMENT HitByPitch  (#PCDATA )>\r
+\r
+<!ELEMENT SacFlies  (#PCDATA )>\r
+\r
+<!ELEMENT Sacrifices  (#PCDATA )>\r
+\r
+<!ELEMENT time_stamp  (#PCDATA )>\r
+\r
diff --git a/test/xml/sportinfo/MLBPlateAppsXML.xml b/test/xml/sportinfo/MLBPlateAppsXML.xml
new file mode 100644 (file)
index 0000000..ffebee5
--- /dev/null
@@ -0,0 +1,410 @@
+<?xml version="1.0" standalone="no" ?>\r
+<!DOCTYPE message PUBLIC "-//TSN//DTD Statistics 1.0/EN" "MLBPlateAppsXML.dtd">\r
+<message>\r
+<XML_File_ID>81107117</XML_File_ID>\r
+<heading>AAX%AL-PLATEAPPS-LEADERS</heading>\r
+<category>Statistics</category>\r
+<sport>MLB</sport>\r
+<title>2002 AL Plate Appearance Leaders</title>\r
+<Listing>\r
+<Rank>1</Rank>\r
+<Name>Derek Jeter, NYY</Name>\r
+<PlateApps>358</PlateApps>\r
+<AtBats>319</AtBats>\r
+<Walks>33</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>2</Rank>\r
+<Name>Ichiro Suzuki, SEA</Name>\r
+<PlateApps>352</PlateApps>\r
+<AtBats>307</AtBats>\r
+<Walks>37</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>2</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>3</Rank>\r
+<Name>Alex Rodriguez, TEX</Name>\r
+<PlateApps>345</PlateApps>\r
+<AtBats>294</AtBats>\r
+<Walks>44</Walks>\r
+<HitByPitch>5</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>4</Rank>\r
+<Name>Alfonso Soriano, NYY</Name>\r
+<PlateApps>343</PlateApps>\r
+<AtBats>326</AtBats>\r
+<Walks>11</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>5</Rank>\r
+<Name>Jason Giambi, NYY</Name>\r
+<PlateApps>339</PlateApps>\r
+<AtBats>279</AtBats>\r
+<Walks>52</Walks>\r
+<HitByPitch>7</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>6</Rank>\r
+<Name>Bernie Williams, NYY</Name>\r
+<PlateApps>337</PlateApps>\r
+<AtBats>288</AtBats>\r
+<Walks>46</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Jacque Jones, MIN</Name>\r
+<PlateApps>337</PlateApps>\r
+<AtBats>308</AtBats>\r
+<Walks>21</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>5</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>8</Rank>\r
+<Name>Miguel Tejada, OAK</Name>\r
+<PlateApps>335</PlateApps>\r
+<AtBats>316</AtBats>\r
+<Walks>15</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>0</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>9</Rank>\r
+<Name>Garret Anderson, ANA</Name>\r
+<PlateApps>328</PlateApps>\r
+<AtBats>310</AtBats>\r
+<Walks>13</Walks>\r
+<HitByPitch>0</HitByPitch>\r
+<SacFlies>5</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Carlos Delgado, TOR</Name>\r
+<PlateApps>328</PlateApps>\r
+<AtBats>264</AtBats>\r
+<Walks>55</Walks>\r
+<HitByPitch>6</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>11</Rank>\r
+<Name>Cristian Guzman, MIN</Name>\r
+<PlateApps>327</PlateApps>\r
+<AtBats>311</AtBats>\r
+<Walks>6</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>4</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>12</Rank>\r
+<Name>Johnny Damon, BOS</Name>\r
+<PlateApps>326</PlateApps>\r
+<AtBats>292</AtBats>\r
+<Walks>27</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>13</Rank>\r
+<Name>Torii Hunter, MIN</Name>\r
+<PlateApps>325</PlateApps>\r
+<AtBats>300</AtBats>\r
+<Walks>21</Walks>\r
+<HitByPitch>1</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>John Olerud, SEA</Name>\r
+<PlateApps>325</PlateApps>\r
+<AtBats>267</AtBats>\r
+<Walks>51</Walks>\r
+<HitByPitch>1</HitByPitch>\r
+<SacFlies>6</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>15</Rank>\r
+<Name>Omar Vizquel, CLE</Name>\r
+<PlateApps>323</PlateApps>\r
+<AtBats>275</AtBats>\r
+<Walks>36</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>7</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>16</Rank>\r
+<Name>Carlos Beltran, KC</Name>\r
+<PlateApps>322</PlateApps>\r
+<AtBats>283</AtBats>\r
+<Walks>33</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>17</Rank>\r
+<Name>Randy Winn, TB</Name>\r
+<PlateApps>321</PlateApps>\r
+<AtBats>295</AtBats>\r
+<Walks>19</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>18</Rank>\r
+<Name>Jim Thome, CLE</Name>\r
+<PlateApps>319</PlateApps>\r
+<AtBats>251</AtBats>\r
+<Walks>60</Walks>\r
+<HitByPitch>5</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Troy Glaus, ANA</Name>\r
+<PlateApps>319</PlateApps>\r
+<AtBats>274</AtBats>\r
+<Walks>39</Walks>\r
+<HitByPitch>3</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Raul Mondesi, TOR</Name>\r
+<PlateApps>319</PlateApps>\r
+<AtBats>285</AtBats>\r
+<Walks>30</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Bret Boone, SEA</Name>\r
+<PlateApps>319</PlateApps>\r
+<AtBats>285</AtBats>\r
+<Walks>28</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>22</Rank>\r
+<Name>Nomar Garciaparra, BOS</Name>\r
+<PlateApps>316</PlateApps>\r
+<AtBats>288</AtBats>\r
+<Walks>20</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>6</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Shea Hillenbrand, BOS</Name>\r
+<PlateApps>316</PlateApps>\r
+<AtBats>297</AtBats>\r
+<Walks>11</Walks>\r
+<HitByPitch>6</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Paul Konerko, SOX</Name>\r
+<PlateApps>316</PlateApps>\r
+<AtBats>290</AtBats>\r
+<Walks>21</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>25</Rank>\r
+<Name>Neifi Perez, KC</Name>\r
+<PlateApps>315</PlateApps>\r
+<AtBats>300</AtBats>\r
+<Walks>8</Walks>\r
+<HitByPitch>0</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>3</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>26</Rank>\r
+<Name>Matt Lawton, CLE</Name>\r
+<PlateApps>312</PlateApps>\r
+<AtBats>266</AtBats>\r
+<Walks>41</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>0</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Jose Cruz, TOR</Name>\r
+<PlateApps>312</PlateApps>\r
+<AtBats>276</AtBats>\r
+<Walks>33</Walks>\r
+<HitByPitch>0</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>28</Rank>\r
+<Name>Frank Thomas, SOX</Name>\r
+<PlateApps>311</PlateApps>\r
+<AtBats>267</AtBats>\r
+<Walks>37</Walks>\r
+<HitByPitch>3</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>29</Rank>\r
+<Name>Tony Batista, BAL</Name>\r
+<PlateApps>310</PlateApps>\r
+<AtBats>276</AtBats>\r
+<Walks>24</Walks>\r
+<HitByPitch>6</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>30</Rank>\r
+<Name>Magglio Ordonez, SOX</Name>\r
+<PlateApps>309</PlateApps>\r
+<AtBats>281</AtBats>\r
+<Walks>27</Walks>\r
+<HitByPitch>0</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>31</Rank>\r
+<Name>Mike Sweeney, KC</Name>\r
+<PlateApps>308</PlateApps>\r
+<AtBats>272</AtBats>\r
+<Walks>30</Walks>\r
+<HitByPitch>2</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Mike Cameron, SEA</Name>\r
+<PlateApps>308</PlateApps>\r
+<AtBats>261</AtBats>\r
+<Walks>39</Walks>\r
+<HitByPitch>5</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>33</Rank>\r
+<Name>Darin Erstad, ANA</Name>\r
+<PlateApps>307</PlateApps>\r
+<AtBats>289</AtBats>\r
+<Walks>14</Walks>\r
+<HitByPitch>1</HitByPitch>\r
+<SacFlies>2</SacFlies>\r
+<Sacrifices>1</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Terrence Long, OAK</Name>\r
+<PlateApps>307</PlateApps>\r
+<AtBats>279</AtBats>\r
+<Walks>27</Walks>\r
+<HitByPitch>0</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>35</Rank>\r
+<Name>Melvin Mora, BAL</Name>\r
+<PlateApps>306</PlateApps>\r
+<AtBats>261</AtBats>\r
+<Walks>33</Walks>\r
+<HitByPitch>9</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>2</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Ray Durham, SOX</Name>\r
+<PlateApps>306</PlateApps>\r
+<AtBats>253</AtBats>\r
+<Walks>37</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>4</SacFlies>\r
+<Sacrifices>8</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>37</Rank>\r
+<Name>David Eckstein, ANA</Name>\r
+<PlateApps>305</PlateApps>\r
+<AtBats>262</AtBats>\r
+<Walks>25</Walks>\r
+<HitByPitch>9</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>6</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>38</Rank>\r
+<Name>Steve Cox, TB</Name>\r
+<PlateApps>303</PlateApps>\r
+<AtBats>278</AtBats>\r
+<Walks>20</Walks>\r
+<HitByPitch>4</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank>39</Rank>\r
+<Name>Tim Salmon, ANA</Name>\r
+<PlateApps>302</PlateApps>\r
+<AtBats>260</AtBats>\r
+<Walks>36</Walks>\r
+<HitByPitch>3</HitByPitch>\r
+<SacFlies>3</SacFlies>\r
+<Sacrifices>0</Sacrifices>\r
+</Listing>\r
+<Listing>\r
+<Rank></Rank>\r
+<Name>Kenny Lofton, SOX</Name>\r
+<PlateApps>302</PlateApps>\r
+<AtBats>261</AtBats>\r
+<Walks>37</Walks>\r
+<HitByPitch>0</HitByPitch>\r
+<SacFlies>1</SacFlies>\r
+<Sacrifices>3</Sacrifices>\r
+</Listing>\r
+<time_stamp> June 27, 2002, at 11:51 AM ET </time_stamp>\r
+</message>\r