(************** Content-type: application/mathematica ************** Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. *******************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 76110, 1988]*) (*NotebookOutlinePosition[ 135629, 4299]*) (* CellTagsIndexPosition[ 135585, 4295]*) (*WindowFrame->Normal*) Notebook[{ Cell[GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgP020S/04P8j0S/2>P9K0QX2>`8j0S/2>P8k0SX2F`8J0S/2>P8k0Wd12`80 00030P0A0QT01@9L0>/000000>L0o`00P`00 000B00001DHa;F/0004?0SX0408I00D2>`3[000000360?l008<000003`0000T08@000016/00000 0`3[0000003600@00003BU9ooeJe0080000:E[E>L`00001Nmgoo?Nmg_Goo>Lh3 000023W>Oomoo`aS001g_Goo?Nl200000e:DOomNm`03000017NmOolicQcW1Goo00@006mkOolicP80 0004MkdaS0000002Ool012DYOomoob480`0000ENmgooIcT001S6009oo`069BT00000MkeoocW>0P00 00Lh00000;F]_N`03Ool01fmk;F/00000>Liooekg00<000086Lh00Woo00Ool00goo00Dmk`00OomoobDY 00<00003CW=oogoo00<00003?Nmg_Goo009oo`036Lh0000001000003249:DWoo 00=oo`03CW<8@P00008000036Liooekg0`0000<8@TicOol00goo00E> L`Q2000005kg00Aoo`04E[DHaP00G_L4Ool01bDY001oogoo9BT005Je009oo`066L200001QS6Kg]oogooMkde[@@00003>Liooekg01<000003`0000d0 8@00000IZaJg17<=4aXG0PlYcFli9O8:>P0;0QT01@9L0>/000000>L0100001DYBWooOol8@P00Mkeo ob48001JeWoo>LhmkgooMkdicSg_>LiW>GooIcT00P0000=JeWooBU800P0000LhmkcW>MkeoodHa0P00 0Woo00TaS000001NmgooCW<00124Mkd017oo00QNmb48OomoodHa>Lhmke:D0Woo00<8@P0000000P00 00=JeWooOol00goo00A[FPQ2001Nm`Aoo`058@P00000001S6002Ool01248000000001Goo00<00248 Ool00goo00=JePQ2HaP01Woo00IW>@Q2001JeWoo>Lh500000e[FOomoo`02Ool28@P2Ool01@00BU9o ogoo600<000038@Qoogoo009oo`0;G_L005kgOolmkaS6MkeooeJe000mk`04Ool01CW>001o ogoo8@P00P0000@mkgooOomoo`800003CW=oogoo00=oo`038@PicWoo00=oo`03?Nl0000000l00003 249S67oo00Eoo`05IcT8@P006Goo00Eoo`07HaP8 @P00G_MoofmkF]H00Woo00=g_@Q2G_L017oo00HQ2000Oomoob480000000300000`Q2 IcUoo`04Ool020008@QoogooIcU_NgooLi`2248017NmOom_NfAXe2M0540e>=[HbP0:0QT01@8k0>/000000L`00001600<000056Lh500001B48OomoogooDY@00`000Woo00DQ200000000248009oo`<00007>Lio ogoo?Nl8@PaS>Lh00Woo00Dmk`00G_Moocg_00D00003G_Moocg_00<000049BUoogoo:DX2Ool00cg_ 0000000300005QBUMkeoofLi5:D002DY>LhBDY000U:FLiOomg_@Q2>Liooekg0P0000UN mgooOomoocg_001Nmgoo?Nl00`0000LiW>GooKg/8@P00>Liooekg00@0 009oo`039BT002DY00Aoo`0<000]JgooOom:DPaS000mkb48?Nmooekg2P0000Lh01`0000Li cWooOolmk`Q236GooMkdQ200048A6<@0200000cW>OomNm`0200001cg_Oomo ocW>36<8@Sg_009oo`07>Lh005kgOolicP00:DX00Woo00@U:EkgOolicP@0009oo`04=Jeg_GooDY@7 000010Q2IcUoodic0`00011>LgooG_L000Q2Mkeooc6<=JeoogNm248005kgOom>L`<00003>Liooekg 01<000003`0000l08@00000ekcKK?_`fn2JE>aa7?4000aS09oo`05=JdYBWooOole[@0200000cW>OomcW0020000 11S6Oomooc6<0R4800m>LgooMkd005JeOomW>CW>?NlHaP00JeYooc6@0500002124Oomood8@ 8@Q[FWooBU8500000e[FOolicP0200002Cg_Oomooa24G_Mooekg>Lhmk`0300000dicOom_N`02Ool0 0a2400000002Ool01Dic>LhaS0008@P00Woo0`0000=_NgooG_L0100000EJeWooKg/005[F00=oo`0; JeYF]A24001JeWooF]HmkcW>000Q2002Ool00gNmOomW>@060000136001JeWooF]HmkcW>000Q2002Ool01cg_ >LhQ2000G_MoogNm009oo`0::DX00000?Nmoofmk>Lhmka240002Ool01B486Lioof]J?NlicQ241P0000DicWooOomoocW>00H00003Kg]ooekg00@00004F]Io ofmk48@2Ool00c6<0000000400000cg_OomNm`0200000fmkOomJeP0400004EkgOom_N`00G_Moodic 8@Q>LgooMkd8@UkgOomNmcW>?Nl00P000Woo00Ag_GooLi`@Q0P0000448Ag_GooCW<200000f`3[0000003600D0000;;F]oogNmDYAooekgOomg_FLi Oolmk`02000016mkOom:DRDY0Woo00@HaP00000U:@9oo`032480000000Qoo`0336Lh005kg00Eoo`03:DX003W>00Aoo`099BT007ooOol]JfLiOomW>Be[009o o`04001NmgooG_L500000cg_Oomoo`02Ool00b480000000400001EkgOomoogooG_L01P000Woo00Liooekg0080009oo`03?Nl000000080 0005>Lioogoo001Nm`04Ool016Li:DX005kg17oo0P001Goo00=g_A2400001`0000DHaWooOolmk`00 009oo`059BT00000>Lioo`02G_L01Goo?Nl000008@P00Woo0`0000Lh2000012e[Oomg_CW>0Woo0`0000@@Q7ooOolQ20800006Kg]ooe[F?NlicSg_ 0Woo00/Q23F]OomoocW>?NlYBP006L009oo`0648AcW7ooMkeoob480P0000I600800009?Nmoogoo48ANmgooG_LicSg_00800009>Lioog>L000icWoo Li`8@P00009oo`05CW000i cP02Ool02124F]Iooe[F?NlicP008@P2Ool01@008@Qoogoo=Jd0100000@aS7ooOolQ20@000048@P005kgOolmk`Q2E[Eoofmk000mkgooKg/icSg_48@00002Ool01G>LOomg_AS68@P00Woo 00D004YBOomg_@Q200@00006>Lioofmk?NlicQ241P0000DicWooOomoocW>00H00003Kg]ooekg00@0 0004F]Ioof]J48@2Ool00cW>0000000400000cg_OomNm`0200000f]JOomJeP0400002UkgOom_N`00 G_MooekgBU9oof]J0P0000ENmgooG_LicSg_0080009oo`058@P@Q6mkOom:DP0900001dYBOomcW000 HaQooc6<00800006CW=oodHa@Q1oodYB0P0000`3[0000003600H00006BU9oogooOol8 @QBU0goo00Tmk`00000005kgOomg_GooG_L010000Woo00HicP00001NmgooE[D30002Ool01Cg_8@Qo ogoo7>L0100000I_NgooOomW>@00=Jd3Ool02BDY000000Q2MkeoogNmOolmk`03000012DYOomooaS6 0P000Woo00Tmk`Q2MkeoofLi8@P00248=Jd00P0000Lh400001GNmOom6<@0024800Woo00DaS000Oomoob4800<000038@Qoogoo00<00007 >Lioogoo?Nl8@PaS>Lh00Woo00Lmk`00G_Moocg_000mk`02Ool011S6G_Moocg_0`0000DU:GooOol0 00aS009oo`03>Lh000000080000D36=g_GooIcTDY@009BTicPaSMkeoofLi9BT002DYIcUoogNm248i cP=oo`0:IcT00000G_Moocg_001Nmgoo?Nl300000bDYOomoo`0400001EkgOolicP00@Q000Woo00@0 03W>OomNm`@000Aoo`03;F/002DY009oo`0<000U:GooOom:DPaS000mkb48?Nmooekg2P0000Lh01`0000LicWooOolmk`Q236OomNm`02 00001cg_OomoocW>36<8@Sg_009oo`06>Lh005kgOolicP000Woo00DHaP00G_MoocW>00@0009oo`05 9BT006LiOomNm`0500001FmkOolmk`00?Nl00Woo014004icOomNm`00249g_GooLiooekg01<000003`0001<08@004@UK_ahe1A/000000>L01P0000@YBWooOom[FP800004AS5oogoo>Lh300001B48Oomo ogoo>Lh00P0000=NmgooOol00goo00@mkcW>OomJeP<00004F]IoocW>0005Ool00`Q20016<@02Ool0 14YB000006Li0Woo00DQ2000000003W>00=oo`038@P0000000Ioo`078@QJeWoo>Lh001S6Mkd017oo 00EBU0000008@WNm009oo`03G_L0000000@00003F]Ioogoo00=oo`04Kg/@Q000G_L4Ool01B48=Jeo ogoo48@00P0000A>LgooKg/000Eoo`04000Q27ooOol300000`Q2HaQoo`05Ool016Li248005[F1Goo 00=S6000F]H017oo0R480Woo00ENmgNmOomooaS600D00003=Jeoogoo00=oo`03?Nl003F]00Moo`03 =Jd003g_009oo`09JeX8@P00001JeWoo>Lh005[F00Aoo`8Q20Aoo`06G_L005kgOom_Nf@06Ool01fLOomBU0008@P00Woo00AW>F]JOomg_@88@P04MkeoofmkHaP2Ool01248 000005[F0Woo00=Nm`0000004@00000B00004Dic:U@9]PfAA]LMmTJmF_P`3[0000003600L00003Mkeoodic00800004249g_GooG_L4000015:DOomoobe[0P00 00=247ooOol00goo00ABU3F]Oomoo`<00005CW=ooekg001_N`04Ool00b48000HaP02Ool013F]0000 02480Woo00Hmk`00000000Q2Kg/2Ool010Q2000006Li1Goo00@icTicOomNm`80000348ANmgoo009o o`05IcT00000000mk`02Ool00d8@0000000400001ekgOomoogooKg]240Q200800003G_Moogoo009o o`049BUNmgooG_L300001248OomoobDY1Goo00@00248Oomoo`@00003249247oo00=oo`05AS48@P00 001Nm`03Ool01FmkCW<@Q000G_L017oo00Be[00001P0000<]JfmkOol00Woo 00DicP00000U:Fmk00=oo`08Kg/U:@00000icWooMkdLi`<00005G_Moocg_001Nm`04Ool00b489BUo o`03Ool00ekg001Nm`03Ool01GNmCW<8@P00>Lh017oo00Dmk`00Oomoodic00<000039BUoogoo00<0 0003?Nmg_Goo009oo`036Lh0000001000003249247oo00=oo`03AS48@P000080 00036/000000>L0E00000<8@R48 8@P0=`000R488`0000<@Q24824801@0000<@Q24848@0>@0000LhFLaKg9cXg6RD[16P64a6c?]a:W1TH6ILJn3:I4;H8V12H3EP6FP8I0U`0j`800003 0>L000000?l0084000004P0001M643G>6B/I[`;D1J`j5RhF<_X]dc8i@[Xn627F:]XE>13J3=TDf0DA 0QT2F`3[008000030bEh1=@F]cXEBU8]TdIEE[AJ]BXe05YDJ"], "GraphicHeader", Evaluatable->False, ImageSize->{430, 31}, ImageMargins->{{0, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}], Cell[CellGroupData[{ Cell[TextData[{ "Extending ", StyleBox["Mathematica", FontSlant->"Italic"], "'s XML Capabilities with J/Link" }], "Title"], Cell["", "Subtitle"], Cell[TextData[StyleBox["Todd Gayley\nWolfram Research", "Author"]], "Author"], Cell[TextData[{ "Note: This package requires XML features present only in ", StyleBox["Mathematica", FontSlant->"Italic"], " 4.2 and later. You will not be able to run these examples unless you have \ that version (not available yet at the time of this writing). At the time \ that 4.2 ships, I will make the code for the XMLJava application described \ here freely available, probably from the J/Link area of the WRI site \ (www.wolfram.com/solutions/mathlink/jlink)." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Introduction", "Section"], Cell[TextData[{ "This talk will present some of the capabilities of the XMLJava \ application. This application adds some useful functionality to ", StyleBox["Mathematica", FontSlant->"Italic"], "'s XML-handling features." }], "Text"], Cell[TextData[{ "The XMLJava application relies on open source Java implementations of XML \ technologies such as DOM, SAX, and XSLT. These Java implementations are \ called from ", StyleBox["Mathematica", FontSlant->"Italic"], " using ", StyleBox["J/Link", FontSlant->"Italic"], ". Java is a natural language to use for XML processing, as it has \ well-developed class libraries for everything related to XML, and most new \ work with XML appears first in a Java implementation." }], "Text"], Cell["\<\ The application will be made freely available as an unsupported \ tool and J/Link sample application.\ \>", "Text"], Cell[CellGroupData[{ Cell["Features Summary", "Subsection"], Cell["\<\ Create Java DOM objects from XML files or URLs, or Symbolic XML \ expressions. Create Symbolic XML from Java DOM objects.\ \>", "Text", CellDingbat->"\[FilledSmallCircle]"], Cell[TextData[{ "SAX parsing of XML data, with SAX event handler functions written in ", StyleBox["Mathematica.", FontSlant->"Italic"] }], "Text", CellDingbat->"\[FilledSmallCircle]"], Cell["\<\ Perform XSLT tranformations on XML input from a file, URL, or \ Symbolic XML expression.\ \>", "Text", CellDingbat->"\[FilledSmallCircle]"], Cell["\<\ Perform XPath queries on XML input from a file, URL, or Symbolic \ XML expression.\ \>", "Text", CellDingbat->"\[FilledSmallCircle]"], Cell[TextData[{ "Direct access to the DOM API, or any other Java API, via ", StyleBox["J/Link", FontSlant->"Italic"], ". Motivated users can easily extend the package or add new features. Any \ XML technology that works with DOM objects can be wired up easily." }], "Text", CellDingbat->"\[FilledSmallCircle]"], Cell["Complete source code is provided.", "Text", CellDingbat->"\[FilledSmallCircle]"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Initialization", "Section"], Cell["Needs[\"XML`\"]", "Input", CellLabel->"In[1]:="], Cell["Needs[\"XMLJava`\"]", "Input", CellLabel->"In[2]:="], Cell["\<\ sampleFile = ToFileName[{$TopDirectory, \"AddOns\", \ \"Applications\", \"XMLJava\", \"SampleFiles\"}, \"stocks.xml\"];\ \>", \ "Input", CellLabel->"In[3]:="], Cell[CellGroupData[{ Cell["ImportXML[sampleFile]", "Input", CellLabel->"In[4]:="], Cell[BoxData[ \(\(XMLObject["Document"]\)[{}, XMLElement[ "stock_quotes", {}, {XMLElement[ "stock_quote", {}, {XMLElement["symbol", {}, {"IBM"}], XMLElement[ "when", {}, {XMLElement["date", {}, {"12/16/1999"}], XMLElement["time", {}, {"4:40PM"}]}], XMLElement[ "price", {"type" \[Rule] "ask", "value" \[Rule] "109.1875"}, {}], XMLElement[ "price", {"type" \[Rule] "open", "value" \[Rule] "108"}, {}], XMLElement[ "price", {"type" \[Rule] "dayhigh", "value" \[Rule] "109.6875"}, {}], XMLElement[ "price", {"type" \[Rule] "daylow", "value" \[Rule] "105.75"}, {}], XMLElement["change", {}, {"+2.1875"}], XMLElement["volume", {}, {"7050200"}]}], XMLElement[ "stock_quote", {}, {XMLElement["symbol", {}, {"MSFT"}], XMLElement[ "when", {}, {XMLElement["date", {}, {"12/16/1999"}], XMLElement["time", {}, {"4:01PM"}]}], XMLElement[ "price", {"type" \[Rule] "ask", "value" \[Rule] "113.6875"}, {}], XMLElement[ "price", {"type" \[Rule] "open", "value" \[Rule] "109.25"}, {}], XMLElement[ "price", {"type" \[Rule] "dayhigh", "value" \[Rule] "115"}, {}], XMLElement[ "price", {"type" \[Rule] "daylow", "value" \[Rule] "108.9375"}, {}], XMLElement["change", {}, {"+5.25"}], XMLElement["volume", {}, {"64282200"}]}]}], {}]\)], "Output", CellLabel->"Out[4]="] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Java DOM Objects", "Section"], Cell["\<\ The key capability of XMLJava is its ability to construct Java DOM \ objects out of Symbolic XML and vice versa. Once we have the ability to go \ back and forth between DOM and Symbolic XML, a wide variety of XML operations \ are easy. For example, XSLT transformation and XPath queries can be performed \ on DOM objects.\ \>", "Text"], Cell["\<\ DOM stands for Document Object Model, and it is a standard API for \ manipulating XML data. XMLJava uses the Java API for XML Processing (JAXP) \ implementation of various XML APIs.\ \>", "Text"], Cell[TextData[{ "The function that creates a DOM object is called ", StyleBox["MakeDOM", FontWeight->"Bold"], ". It can operate on a variety of inputs:\n\t- a raw string of XML data\n\t\ - an XML filename\n\t- a URL that points to an XML data source\n\t- a \ Symbolic XML expression" }], "Text"], Cell[CellGroupData[{ Cell["dom = MakeDOM[sampleFile]", "Input", CellLabel->"In[5]:="], Cell[BoxData[ InterpretationBox[\(\[LeftGuillemet]JavaObject[ "org.apache.crimson.tree.XmlDocument"] \[RightGuillemet]\), JLink`Objects`JavaObject537201541121]], "Output", CellLabel->"Out[5]="] }, Closed]], Cell["One thing to do is to convert to Symbolic XML:", "Text"], Cell[CellGroupData[{ Cell["ToSymbolicXML[dom]", "Input", CellLabel->"In[6]:="], Cell[BoxData[ \(\(XMLObject["XMLDocument"]\)[{}, XMLElement[ "stock_quotes", {}, {"\n", XMLElement[ "stock_quote", {}, {"\n ", XMLElement["symbol", {}, {"IBM"}], "\n ", XMLElement[ "when", {}, {"\n ", XMLElement["date", {}, {"12/16/1999"}], "\n ", XMLElement["time", {}, {"4:40PM"}], "\n "}], "\n ", XMLElement[ "price", {"type" \[Rule] "ask", "value" \[Rule] "109.1875"}, {}], "\n ", XMLElement[ "price", {"type" \[Rule] "open", "value" \[Rule] "108"}, {}], "\n ", XMLElement[ "price", {"type" \[Rule] "dayhigh", "value" \[Rule] "109.6875"}, {}], "\n ", XMLElement[ "price", {"type" \[Rule] "daylow", "value" \[Rule] "105.75"}, {}], "\n ", XMLElement["change", {}, {"+2.1875"}], "\n ", XMLElement["volume", {}, {"7050200"}], "\n"}], "\n\n", XMLElement[ "stock_quote", {}, {"\n ", XMLElement["symbol", {}, {"MSFT"}], "\n ", XMLElement[ "when", {}, {"\n ", XMLElement["date", {}, {"12/16/1999"}], "\n ", XMLElement["time", {}, {"4:01PM"}], "\n "}], "\n ", XMLElement[ "price", {"type" \[Rule] "ask", "value" \[Rule] "113.6875"}, {}], "\n ", XMLElement[ "price", {"type" \[Rule] "open", "value" \[Rule] "109.25"}, {}], "\n ", XMLElement[ "price", {"type" \[Rule] "dayhigh", "value" \[Rule] "115"}, {}], "\n ", XMLElement[ "price", {"type" \[Rule] "daylow", "value" \[Rule] "108.9375"}, {}], "\n ", XMLElement["change", {}, {"+5.25"}], "\n ", XMLElement["volume", {}, {"64282200"}], "\n"}], "\n"}]]\)], "Output", CellLabel->"Out[6]="] }, Closed]], Cell[TextData[{ "Developers will find that DOM objects are an extremely useful starting \ point for a wide variety of present and future XML technologies and \ manipulations. The ", StyleBox["XSLTransform", FontWeight->"Bold"], " and ", StyleBox["XPathApply", FontWeight->"Bold"], " functions are just a few lines of code that operate on DOM objects. Other \ XML functions should be similarly straightforward with a DOM object as the \ starting point." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["XSLT", "Section"], Cell[TextData[{ "The ", StyleBox["XSLTransform", FontWeight->"Bold"], " function takes an XML input and an XSL stylesheet, performs the \ transformation, and returns the Symbolic XML expression that represents the \ resulting XML. The input can be a raw XML string, a filename, a URL, a Java \ DOM object, or a Symbolic XML expression. The XSL stylesheet must be given as \ a filename." }], "Text"], Cell["\<\ birdsFile = ToFileName[{$TopDirectory, \"AddOns\", \ \"Applications\", \"XMLJava\", \"SampleFiles\"}, \"birds.xml\"]; xslFile = ToFileName[{$TopDirectory, \"AddOns\", \"Applications\", \ \"XMLJava\", \"SampleFiles\"}, \"birds.xsl\"];\ \>", "Input", CellLabel->"In[7]:="], Cell[CellGroupData[{ Cell["XSLTransform[birdsFile, xslFile]", "Input", CellLabel->"In[9]:="], Cell[BoxData[ \(\(XMLObject["XMLDocument"]\)[{}, XMLElement[ "BirdInfo", {}, {"\nOrder is: ", "GAVIIFORMES", "\n\tFamily is: ", "GAVIIDAE", "\n ", "\n ", "Red-throated Loon", " ", "Gavia stellata", "\n ", "Arctic Loon", " ", "Gavia arctica", "\n ", "Common Loon", " ", "Gavia immer", "\n ", "\n", "\nOrder is: ", "PODICIPEDIFORMES", "\n\tFamily is: ", "PODICIPEDIDAE", "\n ", "\n ", "Least Grebe", " ", "Tachybaptus dominicus", "\n ", "Pied-billed Grebe", " ", "Podilymbus podiceps", "\n ", "\n", "\nOrder is: ", "PELECANIFORMES", "\n\tFamily is: ", "SULIDAE", "\n ", "\n ", "Masked Booby", " ", "Sula dactylatra", "\n ", "Blue-footed Booby", " ", "Sula nebouxii", "\n ", "Red-footed Booby", " ", "Sula sula", "\n ", "Northern Gannet", " ", "Morus bassanus", "\n ", "\n\tFamily is: ", "PELECANIDAE", "\n ", "\n ", "American White Pelican", " ", "Pelecanus erythrorhynchos", "\n ", "Brown Pelican", " ", "Pelecanus occidentalis", "\n ", "\n\tFamily is: ", "FREGATIDAE", "\n ", "\n ", "Great Frigatebird", " ", "Fregata minor", "\n ", "Lesser Frigatebird", " ", "Fregata ariel", "\n ", "\n"}]]\)], "Output", CellLabel->"Out[9]="] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["XPath", "Section"], Cell[TextData[{ "Another XML technology that can operate on DOM objects is XPath. XPath \ provides a way to address parts of an XML document. For use from ", StyleBox["Mathematica", FontSlant->"Italic"], ", you can think of it as a query language for extracting parts of an XML \ document." }], "Text"], Cell[TextData[{ "You can use the ", StyleBox["XPathApply", FontWeight->"Bold"], " function to apply an XPath expression to XML input and return the \ resulting portions. The input to ", StyleBox["XPathApply", FontWeight->"Bold"], " can be a raw XML string, filename, URL, or Symbolic XML expression." }], "Text"], Cell["\<\ This query extracts all elements with tag name \"Species\", \ wherever they appear:\ \>", "Text"], Cell[CellGroupData[{ Cell["XPathApply[birdsFile, \"//Species\"]", "Input", CellLabel->"In[10]:="], Cell[BoxData[ \({XMLElement[ "Species", {"Scientific_Name" \[Rule] "Gavia stellata"}, {"Red-throated Loon"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Gavia arctica"}, {"Arctic Loon"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Gavia immer"}, {"Common Loon"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Tachybaptus dominicus"}, {"Least Grebe"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Podilymbus podiceps"}, {"Pied-billed Grebe"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Sula dactylatra"}, {"Masked Booby"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Sula nebouxii"}, {"Blue-footed Booby"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Sula sula"}, {"Red-footed Booby"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Morus bassanus"}, {"Northern Gannet"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Pelecanus erythrorhynchos"}, {"American White Pelican"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Pelecanus occidentalis"}, {"Brown Pelican"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Fregata minor"}, {"Great Frigatebird"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Fregata ariel"}, {"Lesser Frigatebird"}]}\)], "Output", CellLabel->"Out[10]="] }, Closed]], Cell[TextData[{ "As a means of extracting desired portions of an XML document, ", StyleBox["XPathApply", FontWeight->"Bold"], " can be compared to the ", StyleBox["Mathematica", FontSlant->"Italic"], " functions ", StyleBox["Cases", FontWeight->"Bold"], " and ", StyleBox["Select", FontWeight->"Bold"], ". In fact, it is usually the case that extracting portions of an XML \ document that match a certain pattern is easier in the ", StyleBox["Mathematica", FontSlant->"Italic"], " language than using XPath. This is a reason why ", StyleBox["Mathematica", FontSlant->"Italic"], " is such a natural language for manipulating XML data. Here is the \ equivalent ", StyleBox["Mathematica", FontSlant->"Italic"], " code:" }], "Text"], Cell[CellGroupData[{ Cell["\<\ Cases[ImportXML[birdsFile], XMLElement[\"Species\", __], \ Infinity]\ \>", "Input", CellLabel->"In[11]:="], Cell[BoxData[ \({XMLElement[ "Species", {"Scientific_Name" \[Rule] "Gavia stellata"}, {"Red-throated Loon"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Gavia arctica"}, {"Arctic Loon"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Gavia immer"}, {"Common Loon"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Tachybaptus dominicus"}, {"Least Grebe"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Podilymbus podiceps"}, {"Pied-billed Grebe"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Sula dactylatra"}, {"Masked Booby"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Sula nebouxii"}, {"Blue-footed Booby"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Sula sula"}, {"Red-footed Booby"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Morus bassanus"}, {"Northern Gannet"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Pelecanus erythrorhynchos"}, {"American White Pelican"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Pelecanus occidentalis"}, {"Brown Pelican"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Fregata minor"}, {"Great Frigatebird"}], XMLElement[ "Species", {"Scientific_Name" \[Rule] "Fregata ariel"}, {"Lesser Frigatebird"}]}\)], "Output", CellLabel->"Out[11]="] }, Closed]], Cell[TextData[{ "It takes a bit of thought to come up with an example where the XPath query \ is significantly easier to write than the corresponding ", StyleBox["Mathematica", FontSlant->"Italic"], " code (at least, easier for an experienced ", StyleBox["Mathematica", FontSlant->"Italic"], " programmer). An example is the following: \"Give me the common names of \ all the listed birds in the order Pelecaniformes\". Here it is using ", StyleBox["XPathApply", FontWeight->"Bold"], ": " }], "Text"], Cell[CellGroupData[{ Cell["\<\ XPathApply[birdsFile, \ \"//Order[@Name='PELECANIFORMES']//Species/text()\"]\ \>", "Input", CellLabel->"In[12]:="], Cell[BoxData[ \({"Masked Booby", "Blue-footed Booby", "Red-footed Booby", "Northern Gannet", "American White Pelican", "Brown Pelican", "Great Frigatebird", "Lesser Frigatebird"}\)], "Output", CellLabel->"Out[12]="] }, Closed]], Cell[TextData[{ "Here it is in ", StyleBox["Mathematica.", FontSlant->"Italic"], " It takes two separate calls to ", StyleBox["Cases", FontWeight->"Bold"], ":" }], "Text"], Cell[CellGroupData[{ Cell["\<\ pelicans = Cases[ImportXML[birdsFile], XMLElement[\"Order\", {_ -> \ \"PELECANIFORMES\"}, _], Infinity]; Cases[pelicans, XMLElement[\"Species\", _, {name_}] :> name, Infinity]\ \>", \ "Input", CellLabel->"In[13]:="], Cell[BoxData[ \({"Masked Booby", "Blue-footed Booby", "Red-footed Booby", "Northern Gannet", "American White Pelican", "Brown Pelican", "Great Frigatebird", "Lesser Frigatebird"}\)], "Output", CellLabel->"Out[14]="] }, Closed]], Cell[TextData[{ "The ", StyleBox["XPathApply", FontWeight->"Bold"], " function will prove useful to those programmers who are fluent in XPath \ but not in ", StyleBox["Mathematica", FontSlant->"Italic"], ", or who already have appropriate XPath expressions supplied from another \ source, or who have queries that are sufficiently complex and specialized \ that they are most easily expressed in XPath." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["SAX", "Section"], Cell[TextData[{ "SAX is another popular API for parsing XML. Instead of building up an \ in-memory tree structure (the DOM object), a SAX parser scans through an XML \ document firing callbacks to user-specified functions as parsing events occur \ (\"startElement\", \"endElement\", etc.) In many cases, it is more convenient \ to simply be notified of things of interest in the XML file, rather than \ being given a big tree (or ", StyleBox["Mathematica", FontSlant->"Italic"], " Symbolic XML expression) that you have to walk through and inspect. With \ SAX, you can parse documents much larger than your available system memory, \ and you can construct your own data structures using your callback event \ handlers." }], "Text"], Cell[TextData[{ "The XMLJava application lets you use SAX to parse XML, and specify ", StyleBox["Mathematica", FontSlant->"Italic"], " functions to be called in response to parsing events. One example of what \ you can do in your callback handlers is build a Symbolic XML expression. Of \ course, this isn't perticularly useful since I", StyleBox["mportXML ", FontWeight->"Bold"], "does this for you. But it is a useful starting point." }], "Text"], Cell[CellGroupData[{ Cell["SAXParser[birdsFile]", "Input", CellLabel->"In[15]:="], Cell[BoxData[ \(\(XMLObject["XMLDocument"]\)[{}, XMLElement[ "Class", {"Name" \[Rule] "AVES"}, {\*"\<\"\"\>", "\n", " ", XMLElement["Description", {}, {"Birds"}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Order", {"Name" \[Rule] "GAVIIFORMES"}, {\*"\<\"\"\>", "\n", " ", XMLElement["Description", {}, {"Loons"}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Family", {"Name" \[Rule] "GAVIIDAE"}, {\*"\<\"\"\>", "\n", " ", XMLElement["Description", {}, {"Loons"}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Species", {"Scientific_Name" \[Rule] "Gavia stellata"}, {"Red-throated Loon"}], \ \*"\<\"\"\>", "\n", " ", XMLElement[ "Species", {"Scientific_Name" \[Rule] "Gavia arctica"}, {"Arctic Loon"}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Species", {"Scientific_Name" \[Rule] "Gavia immer"}, {"Common Loon"}], \*"\<\"\"\>", "\n", " "}], \*"\<\"\"\>", "\n", " "}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Order", {"Name" \[Rule] "PODICIPEDIFORMES"}, {\*"\<\"\"\>", "\n", " ", XMLElement["Description", {}, {"Grebes"}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Family", {"Name" \[Rule] "PODICIPEDIDAE"}, {\*"\<\"\"\>", "\n", " ", XMLElement["Description", {}, {"Grebes"}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Species", {"Scientific_Name" \[Rule] "Tachybaptus dominicus"}, {"Least Grebe"}], \*"\<\"\"\ \>", "\n", " ", XMLElement[ "Species", {"Scientific_Name" \[Rule] "Podilymbus podiceps"}, {"Pied-billed Grebe"}], \*"\<\ \"\"\>", "\n", " "}], \*"\<\"\"\>", "\n", " "}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Order", {"Name" \[Rule] "PELECANIFORMES"}, {\*"\<\"\"\>", "\n", " ", XMLElement[ "Description", {}, {"Totipalmate swimmers"}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Family", {"Name" \[Rule] "SULIDAE"}, {\*"\<\"\"\>", "\n", " ", XMLElement[ "Description", {}, {"Boobies and gannets"}], \ \*"\<\"\"\>", "\n", " ", XMLElement[ "Species", {"Scientific_Name" \[Rule] "Sula dactylatra"}, {"Masked Booby"}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Species", {"Scientific_Name" \[Rule] "Sula nebouxii"}, {"Blue-footed Booby"}], \ \*"\<\"\"\>", "\n", " ", XMLElement[ "Species", {"Scientific_Name" \[Rule] "Sula sula"}, {"Red-footed Booby"}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Species", {"Scientific_Name" \[Rule] "Morus bassanus"}, {"Northern Gannet"}], \ \*"\<\"\"\>", "\n", " "}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Family", {"Name" \[Rule] "PELECANIDAE"}, {\*"\<\"\"\>", "\n", " ", XMLElement["Description", {}, {"Pelicans"}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Species", {"Scientific_Name" \[Rule] "Pelecanus erythrorhynchos"}, {"American White \ Pelican"}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Species", {"Scientific_Name" \[Rule] "Pelecanus occidentalis"}, {"Brown Pelican"}], \ \*"\<\"\"\>", "\n", " "}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Family", {"Name" \[Rule] "FREGATIDAE"}, {\*"\<\"\"\>", "\n", " ", XMLElement[ "Description", {}, {"Frigatebirds"}], \*"\<\"\"\>", "\n", " ", XMLElement[ "Species", {"Scientific_Name" \[Rule] "Fregata minor"}, {"Great Frigatebird"}], \ \*"\<\"\"\>", "\n", " ", XMLElement[ "Species", {"Scientific_Name" \[Rule] "Fregata ariel"}, {"Lesser Frigatebird"}], \ \*"\<\"\"\>", "\n", " "}], \*"\<\"\"\>", "\n", " "}], \*"\<\"\"\>", "\n"}]]\)], "Output", CellLabel->"Out[15]="] }, Closed]], Cell[TextData[{ "The ", StyleBox["SAXParser", FontWeight->"Bold"], " function takes two arguments and some options. The first argument is the \ XML input, which can be a raw string, a filename, or a URL. The second \ argument is a list of rules that associate ", StyleBox["Mathematica", FontSlant->"Italic"], " functions with SAX parsing events. If you leave out this argument, it \ defaults to using the handlers that build Symbolic XML, as in the line \ above." }], "Text"], Cell["\<\ Building an expression like the above example is an atypical use of \ SAX--you usually use SAX if you are interested in gleaning some information \ from a document, not acquiring a complete representation of it. \ \>", "Text"], Cell[TextData[{ "Here is a more realistic example of how you would use the ", StyleBox["SAXParser", FontWeight->"Bold"], " function. We want to obtain a list of all the common names of birds \ referred to in the birds.xml document. The common names appear as the text \ content of elements with tag name \"Species\". To extract this information, \ we will only need to be notified of the \"startElement\" and \"characters\" \ SAX events. Here are the handlers we define to be called when these events \ occur:" }], "Text"], Cell["\<\ startElementHandler[uri_, localName_, qualifiedName_, attrList_] := \tcaptureNextText = (localName == \"Species\") \t charactersHandler[chars_List] := \t( \t\tIf[captureNextText, AppendTo[namesList, FromCharacterCode[chars]]]; \t\tcaptureNextText = False \t)\ \>", "Input", CellLabel->"In[16]:="], Cell[TextData[{ "Now we call ", StyleBox["SAXParser:", FontWeight->"Bold"] }], "Text"], Cell[CellGroupData[{ Cell["\<\ Block[{namesList = {}}, \tSAXParser[birdsFile, {\"startElement\" -> \"startElementHandler\", \ \"characters\" -> \"charactersHandler\"}]; \tnamesList ]\ \>", "Input", CellLabel->"In[19]:="], Cell[BoxData[ \({"Red-throated Loon", "Arctic Loon", "Common Loon", "Least Grebe", "Pied-billed Grebe", "Masked Booby", "Blue-footed Booby", "Red-footed Booby", "Northern Gannet", "American White Pelican", "Brown Pelican", "Great Frigatebird", "Lesser Frigatebird"}\)], "Output",\ CellLabel->"Out[19]="] }, Closed]], Cell[TextData[{ "Please note that I don't recommend that you go to the effort of using SAX \ for this sort of thing unless you really want to avoid building an entire DOM \ tree and associated Symbolic XML expression. It is usually much easier to \ just get the Symbolic XML expression and manipulate it with ", StyleBox["Mathematica", FontSlant->"Italic"], " code. Compare how simple it is to extract the names from the Symbolic \ XML:" }], "Text"], Cell[CellGroupData[{ Cell["\<\ Cases[ImportXML[birdsFile], XMLElement[\"Species\", _, {name_}] :> \ name, Infinity]\ \>", "Input", CellLabel->"In[20]:="], Cell[BoxData[ \({"Red-throated Loon", "Arctic Loon", "Common Loon", "Least Grebe", "Pied-billed Grebe", "Masked Booby", "Blue-footed Booby", "Red-footed Booby", "Northern Gannet", "American White Pelican", "Brown Pelican", "Great Frigatebird", "Lesser Frigatebird"}\)], "Output",\ CellLabel->"Out[20]="] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Example: Headlines From the Internet", "Section"], Cell[TextData[{ "This example shows how to read headlines in XML format from the Slashdot \ Internet news site and build a table of hyperlink buttons in ", StyleBox["Mathematica", FontSlant->"Italic"], " that point to the stories. We will examine several ways to process the \ XML headline data." }], "Text"], Cell[CellGroupData[{ Cell["\<\ slashdotNews = \ ImportXML[\"http://www.slashdot.org/slashdot.xml\"]\ \>", "Input", CellLabel->"In[21]:="], Cell[BoxData[ \(\(XMLObject[ "Document"]\)[{\(XMLObject["Declaration"]\)[ "Version" \[Rule] "1.0"]}, XMLElement[ "backslash", {{"http://www.w3.org/2000/xmlns/", "backslash"} \[Rule] "http://slashdot.org/backslash.dtd"}, {XMLElement[ "story", {}, {XMLElement[ "title", {}, {"Lucent's New Chip Is Just One Molecule \ Thick"}], XMLElement[ "url", {}, \ {"http://slashdot.org/article.pl?sid=01/10/19/0240243"}], XMLElement["time", {}, {"2001-10-19 02:56:33"}], XMLElement["author", {}, {"timothy"}], XMLElement["department", {}, {"thinner-than-ally"}], XMLElement["topic", {}, {"126"}], XMLElement["comments", {}, {"98"}], XMLElement["section", {}, {"articles"}], XMLElement["image", {}, {"topictech2.gif"}]}], XMLElement[ "story", {}, {XMLElement[ "title", {}, {"Slashback: Quiesence, Jazz, RAND"}], XMLElement[ "url", {}, \ {"http://slashdot.org/article.pl?sid=01/10/19/002226"}], XMLElement["time", {}, {"2001-10-18 23:59:40"}], XMLElement["author", {}, {"timothy"}], XMLElement["department", {}, {"blacksburg-field-office"}], XMLElement["topic", {}, {"167"}], XMLElement["comments", {}, {"135"}], XMLElement["section", {}, {"articles"}], XMLElement["image", {}, {"topicslashback.gif"}]}], XMLElement[ "story", {}, {XMLElement[ "title", {}, {"Sprint ION's $100/mo, 8Mbps Home Service \ Tanks"}], XMLElement[ "url", {}, \ {"http://slashdot.org/article.pl?sid=01/10/18/228250"}], XMLElement["time", {}, {"2001-10-18 22:14:34"}], XMLElement["author", {}, {"timothy"}], XMLElement["department", {}, {"too-good-to-last"}], XMLElement["topic", {}, {"95"}], XMLElement["comments", {}, {"211"}], XMLElement["section", {}, {"articles"}], XMLElement["image", {}, {"topicinternet.gif"}]}], XMLElement[ "story", {}, {XMLElement[ "title", {}, {"SkyOS Now Runs Linux Binaries Natively"}], XMLElement[ "url", {}, \ {"http://slashdot.org/article.pl?sid=01/10/18/2023216"}], XMLElement["time", {}, {"2001-10-18 20:56:02"}], XMLElement["author", {}, {"timothy"}], XMLElement[ "department", {}, {"emulation-is-sincere-flattery"}], XMLElement["topic", {}, {"99"}], XMLElement["comments", {}, {"257"}], XMLElement["section", {}, {"developers"}], XMLElement["image", {}, {"topicnews.gif"}]}], XMLElement[ "story", {}, {XMLElement[ "title", {}, {"Yellow Dog Linux 2.1 Shipping"}], XMLElement[ "url", {}, \ {"http://slashdot.org/article.pl?sid=01/10/18/1821200"}], XMLElement["time", {}, {"2001-10-18 19:55:24"}], XMLElement["author", {}, {"timothy"}], XMLElement["department", {}, {"oh-ess-what"}], XMLElement["topic", {}, {"107"}], XMLElement["comments", {}, {"204"}], XMLElement["section", {}, {"articles"}], XMLElement["image", {}, {"topicapple.gif"}]}], XMLElement[ "story", {}, {XMLElement[ "title", {}, {"EFF speaks out against MAPS"}], XMLElement[ "url", {}, \ {"http://slashdot.org/article.pl?sid=01/10/17/1755213"}], XMLElement["time", {}, {"2001-10-18 19:15:32"}], XMLElement["author", {}, {"chrisd"}], XMLElement[ "department", {}, \ {"are-external-protections-limitations-on-freedom"}], XMLElement["topic", {}, {"111"}], XMLElement["comments", {}, {"334"}], XMLElement["section", {}, {"yro"}], XMLElement["image", {}, {"topicspam.gif"}]}], XMLElement[ "story", {}, {XMLElement[ "title", {}, {"TiVo Gets In Deeper With Sony"}], XMLElement[ "url", {}, \ {"http://slashdot.org/article.pl?sid=01/10/18/182252"}], XMLElement["time", {}, {"2001-10-18 18:42:04"}], XMLElement["author", {}, {"timothy"}], XMLElement[ "department", {}, \ {"digitizing-your-youthful-television-experience"}], XMLElement["topic", {}, {"129"}], XMLElement["comments", {}, {"168"}], XMLElement["section", {}, {"articles"}], XMLElement["image", {}, {"topictv.jpg"}]}], XMLElement[ "story", {}, {XMLElement[ "title", {}, {"Digital Cameras Go Disposable"}], XMLElement[ "url", {}, \ {"http://slashdot.org/article.pl?sid=01/10/18/1730211"}], XMLElement["time", {}, {"2001-10-18 17:59:19"}], XMLElement["author", {}, {"timothy"}], XMLElement["department", {}, {"japan-is-weird"}], XMLElement["topic", {}, {"126"}], XMLElement["comments", {}, {"209"}], XMLElement["section", {}, {"articles"}], XMLElement["image", {}, {"topictech2.gif"}]}], XMLElement[ "story", {}, {XMLElement[ "title", {}, {"Neighborhood Area Networks?"}], XMLElement[ "url", {}, \ {"http://slashdot.org/article.pl?sid=01/10/18/1716222"}], XMLElement["time", {}, {"2001-10-18 17:15:24"}], XMLElement["author", {}, {"michael"}], XMLElement["department", {}, {"flying-cars"}], XMLElement["topic", {}, {"126"}], XMLElement["comments", {}, {"266"}], XMLElement["section", {}, {"askslashdot"}], XMLElement["image", {}, {"topictech2.gif"}]}], XMLElement[ "story", {}, {XMLElement[ "title", {}, {"Gilmore Commission Recommends Secret 'Cyber \ Court'"}], XMLElement[ "url", {}, \ {"http://slashdot.org/article.pl?sid=01/10/18/1534238"}], XMLElement["time", {}, {"2001-10-18 15:39:58"}], XMLElement["author", {}, {"michael"}], XMLElement["department", {}, {"quis-custodiet"}], XMLElement["topic", {}, {"123"}], XMLElement["comments", {}, {"219"}], XMLElement["section", {}, {"articles"}], XMLElement["image", {}, {"topicdoj.jpg"}]}]}], {}]\)], "Output",\ CellLabel->"Out[21]="] }, Closed]], Cell[TextData[{ "Now let's extract the headline information we need from the XML from the \ Slashdot site. We want a list of pairs {\"headline\", \"url\"}. This will be \ fed into a function that builds the hyperlink buttons. First, we try the \ extraction using the ", StyleBox["Mathematica", FontSlant->"Italic"], " language operating on Symbolic XML:" }], "Text"], Cell[CellGroupData[{ Cell["\<\ headlines1 = \tCases[slashdotNews, \t\tXMLElement[\"story\", _, {___, XMLElement[\"title\", _, {title_}], ___, \t\t\tXMLElement[\"url\", _, {url_}], ___}] :> {title, url}, \t\tInfinity \t]\ \>", "Input", CellLabel->"In[22]:="], Cell[BoxData[ \({{"Lucent's New Chip Is Just One Molecule Thick", "http://slashdot.org/article.pl?sid=01/10/19/0240243"}, {"Slashback: \ Quiesence, Jazz, RAND", "http://slashdot.org/article.pl?sid=01/10/19/002226"}, {"Sprint ION's \ $100/mo, 8Mbps Home Service Tanks", "http://slashdot.org/article.pl?sid=01/10/18/228250"}, {"SkyOS Now \ Runs Linux Binaries Natively", "http://slashdot.org/article.pl?sid=01/10/18/2023216"}, {"Yellow Dog \ Linux 2.1 Shipping", "http://slashdot.org/article.pl?sid=01/10/18/1821200"}, {"EFF speaks \ out against MAPS", "http://slashdot.org/article.pl?sid=01/10/17/1755213"}, {"TiVo Gets \ In Deeper With Sony", "http://slashdot.org/article.pl?sid=01/10/18/182252"}, {"Digital \ Cameras Go Disposable", "http://slashdot.org/article.pl?sid=01/10/18/1730211"}, \ {"Neighborhood Area Networks?", "http://slashdot.org/article.pl?sid=01/10/18/1716222"}, {"Gilmore \ Commission Recommends Secret 'Cyber Court'", "http://slashdot.org/article.pl?sid=01/10/18/1534238"}}\)], "Output", CellLabel->"Out[22]="] }, Closed]], Cell["Now for comaprison, we do the same thing using XPath:", "Text"], Cell[CellGroupData[{ Cell["\<\ dom = MakeDOM[\"http://www.slashdot.org/slashdot.xml\"]; headlines2 = \tPartition[XPathApply[dom, \"//story/title/text() | //story/url/text()\"], \ 2]\ \>", "Input", CellLabel->"In[23]:="], Cell[BoxData[ \({{"Lucent's New Chip Is Just One Molecule Thick", "http://slashdot.org/article.pl?sid=01/10/19/0240243"}, {"Slashback: \ Quiesence, Jazz, RAND", "http://slashdot.org/article.pl?sid=01/10/19/002226"}, {"Sprint ION's \ $100/mo, 8Mbps Home Service Tanks", "http://slashdot.org/article.pl?sid=01/10/18/228250"}, {"SkyOS Now \ Runs Linux Binaries Natively", "http://slashdot.org/article.pl?sid=01/10/18/2023216"}, {"Yellow Dog \ Linux 2.1 Shipping", "http://slashdot.org/article.pl?sid=01/10/18/1821200"}, {"EFF speaks \ out against MAPS", "http://slashdot.org/article.pl?sid=01/10/17/1755213"}, {"TiVo Gets \ In Deeper With Sony", "http://slashdot.org/article.pl?sid=01/10/18/182252"}, {"Digital \ Cameras Go Disposable", "http://slashdot.org/article.pl?sid=01/10/18/1730211"}, \ {"Neighborhood Area Networks?", "http://slashdot.org/article.pl?sid=01/10/18/1716222"}, {"Gilmore \ Commission Recommends Secret 'Cyber Court'", "http://slashdot.org/article.pl?sid=01/10/18/1534238"}}\)], "Output", CellLabel->"Out[24]="] }, Closed]], Cell[TextData[{ "For a third method, we will call methods in the DOM API directly. We are \ using \"raw\" ", StyleBox["J/Link", FontSlant->"Italic"], " here, making Java calls directly from ", StyleBox["Mathematica", FontSlant->"Italic"], ":" }], "Text"], Cell[CellGroupData[{ Cell["\<\ titles = dom@getElementsByTagName[\"title\"]; urls = dom@getElementsByTagName[\"url\"]; len = titles@getLength[]; headlines3 = \tTable[{titles@item[i]@getFirstChild[]@getNodeValue[], \ urls@item[i]@getFirstChild[]@getNodeValue[]}, \t\t{i, 0, titles@getLength[] - 1} \t]\ \>", "Input", CellLabel->"In[25]:="], Cell[BoxData[ \({{"Lucent's New Chip Is Just One Molecule Thick", "http://slashdot.org/article.pl?sid=01/10/19/0240243"}, {"Slashback: \ Quiesence, Jazz, RAND", "http://slashdot.org/article.pl?sid=01/10/19/002226"}, {"Sprint ION's \ $100/mo, 8Mbps Home Service Tanks", "http://slashdot.org/article.pl?sid=01/10/18/228250"}, {"SkyOS Now \ Runs Linux Binaries Natively", "http://slashdot.org/article.pl?sid=01/10/18/2023216"}, {"Yellow Dog \ Linux 2.1 Shipping", "http://slashdot.org/article.pl?sid=01/10/18/1821200"}, {"EFF speaks \ out against MAPS", "http://slashdot.org/article.pl?sid=01/10/17/1755213"}, {"TiVo Gets \ In Deeper With Sony", "http://slashdot.org/article.pl?sid=01/10/18/182252"}, {"Digital \ Cameras Go Disposable", "http://slashdot.org/article.pl?sid=01/10/18/1730211"}, \ {"Neighborhood Area Networks?", "http://slashdot.org/article.pl?sid=01/10/18/1716222"}, {"Gilmore \ Commission Recommends Secret 'Cyber Court'", "http://slashdot.org/article.pl?sid=01/10/18/1534238"}}\)], "Output", CellLabel->"Out[28]="] }, Closed]], Cell[CellGroupData[{ Cell["headlines1 === headlines2 === headlines3", "Input", CellLabel->"In[29]:="], Cell[BoxData[ \(True\)], "Output", CellLabel->"Out[29]="] }, Closed]], Cell["Now build the buttons:", "Text"], Cell["\<\ NotebookWrite[EvaluationNotebook[], Cell[{ButtonBox[#1, ButtonData \ :> {URL[#2], None}, ButtonStyle->\"Hyperlink\"]& @@@ headlines1}, \"Input\"]]\ \ \>", "Input", CellLabel->"In[30]:="], Cell[BoxData[{ ButtonBox[\(Lucent' s\ New\ Chip\ Is\ Just\ One\ Molecule\ Thick\), ButtonData:>{ URL[ "http://slashdot.org/article.pl?sid=01/10/19/0240243"], None}, ButtonStyle->"Hyperlink"], "\n", ButtonBox[\(Slashback : \ Quiesence, \ Jazz, \ RAND\), ButtonData:>{ URL[ "http://slashdot.org/article.pl?sid=01/10/19/002226"], None}, ButtonStyle->"Hyperlink"], "\n", ButtonBox[\(Sprint\ ION' s\ $100/mo, \ 8 Mbps\ Home\ Service\ Tanks\), ButtonData:>{ URL[ "http://slashdot.org/article.pl?sid=01/10/18/228250"], None}, ButtonStyle->"Hyperlink"], "\n", ButtonBox[\(SkyOS\ Now\ Runs\ Linux\ Binaries\ Natively\), ButtonData:>{ URL[ "http://slashdot.org/article.pl?sid=01/10/18/2023216"], None}, ButtonStyle->"Hyperlink"], "\n", ButtonBox[\(Yellow\ Dog\ Linux\ 2.1\ Shipping\), ButtonData:>{ URL[ "http://slashdot.org/article.pl?sid=01/10/18/1821200"], None}, ButtonStyle->"Hyperlink"], "\n", ButtonBox[\(EFF\ speaks\ out\ against\ MAPS\), ButtonData:>{ URL[ "http://slashdot.org/article.pl?sid=01/10/17/1755213"], None}, ButtonStyle->"Hyperlink"], "\n", ButtonBox[\(TiVo\ Gets\ In\ Deeper\ With\ Sony\), ButtonData:>{ URL[ "http://slashdot.org/article.pl?sid=01/10/18/182252"], None}, ButtonStyle->"Hyperlink"], "\n", ButtonBox[\(Digital\ Cameras\ Go\ Disposable\), ButtonData:>{ URL[ "http://slashdot.org/article.pl?sid=01/10/18/1730211"], None}, ButtonStyle->"Hyperlink"], "\n", ButtonBox[\(Neighborhood\ Area\ \(\(Networks\)\(?\)\)\), ButtonData:>{ URL[ "http://slashdot.org/article.pl?sid=01/10/18/1716222"], None}, ButtonStyle->"Hyperlink"], "\n", ButtonBox[\(Gilmore\ Commission\ Recommends\ Secret\ ' Cyber\ Court'\), ButtonData:>{ URL[ "http://slashdot.org/article.pl?sid=01/10/18/1534238"], None}, ButtonStyle->"Hyperlink"]}], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Example: Processing Stock Quotes From the Internet", "Section"], Cell["\<\ Stock quotes are available from the Internet in XML format from \ xmltoday.com. Here we get the information for IBM, MSFT, and SUNW:\ \>", \ "Text"], Cell[CellGroupData[{ Cell["\<\ quotes = \ ImportXML[\"http://www.xmltoday.com/examples/stockquote/getxmlquote.vep?s=IBM+\ MSFT+SUNW\"]\ \>", "Input", CellLabel->"In[31]:="], Cell[BoxData[ \(\(XMLObject["Document"]\)[{}, XMLElement[ "stock_quotes", {}, {XMLElement[ "stock_quote", {}, {XMLElement["symbol", {}, {"IBM"}], XMLElement[ "when", {}, {XMLElement["date", {}, {"10/18/2001"}], XMLElement["time", {}, {"4:00PM"}]}], XMLElement[ "price", {"type" \[Rule] "ask", "value" \[Rule] "101.26"}, {}], XMLElement[ "price", {"type" \[Rule] "open", "value" \[Rule] "103.05"}, {}], XMLElement[ "price", {"type" \[Rule] "dayhigh", "value" \[Rule] "103.75"}, {}], XMLElement[ "price", {"type" \[Rule] "daylow", "value" \[Rule] "100.78"}, {}], XMLElement["change", {}, {"-1.64"}], XMLElement["volume", {}, {"10697000"}]}], XMLElement[ "stock_quote", {}, {XMLElement["symbol", {}, {"MSFT"}], XMLElement[ "when", {}, {XMLElement["date", {}, {"10/18/2001"}], XMLElement["time", {}, {"4:00PM"}]}], XMLElement[ "price", {"type" \[Rule] "ask", "value" \[Rule] "56.75"}, {}], XMLElement[ "price", {"type" \[Rule] "open", "value" \[Rule] "56.34"}, {}], XMLElement[ "price", {"type" \[Rule] "dayhigh", "value" \[Rule] "57.58"}, {}], XMLElement[ "price", {"type" \[Rule] "daylow", "value" \[Rule] "55.50"}, {}], XMLElement["change", {}, {"+0.72"}], XMLElement["volume", {}, {"39262300"}]}], XMLElement[ "stock_quote", {}, {XMLElement["symbol", {}, {"SUNW"}], XMLElement[ "when", {}, {XMLElement["date", {}, {"10/18/2001"}], XMLElement["time", {}, {"4:00PM"}]}], XMLElement[ "price", {"type" \[Rule] "ask", "value" \[Rule] "8.88"}, {}], XMLElement[ "price", {"type" \[Rule] "open", "value" \[Rule] "8.91"}, {}], XMLElement[ "price", {"type" \[Rule] "dayhigh", "value" \[Rule] "9.10"}, {}], XMLElement[ "price", {"type" \[Rule] "daylow", "value" \[Rule] "8.59"}, {}], XMLElement["change", {}, {"+0.08"}], XMLElement["volume", {}, {"49130000"}]}]}], {}]\)], "Output", CellLabel->"Out[31]="] }, Closed]], Cell["\<\ Let's say we want to plot the intraday change as a function of \ volume for these stocks. Here is a complicated Cases function that will \ extract and manipulate the data we want, resulting in a list of triplets \ {volume, change, tickerName}:\ \>", "Text"], Cell[CellGroupData[{ Cell["\<\ data = \tCases[ \t\tquotes, \t\tXMLElement[\"stock_quote\", _, {___, XMLElement[\"symbol\", _, \ {ticker_}], ___, \t\t\tXMLElement[\"price\", {\"type\"->\"dayhigh\", \"value\"->highval_}, _], \ ___, \t\t\tXMLElement[\"price\", {\"type\"->\"daylow\", \"value\"->lowval_}, _], \ ___, \t\t\tXMLElement[\"volume\", _, {vol_}], ___}] :> \t\t\t\t{ToExpression[vol], ToExpression[highval] - ToExpression[lowval], \ ticker}, \t\tInfinity \t]\ \>", "Input", CellLabel->"In[32]:="], Cell[BoxData[ \({{10697000, 2.969999999999999`, "IBM"}, {39262300, 2.0799999999999983`, "MSFT"}, {49130000, 0.5099999999999998`, "SUNW"}}\)], "Output", CellLabel->"Out[32]="] }, Closed]], Cell[CellGroupData[{ Cell["\<\ <", "Input", CellLabel->"In[33]:="], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .61803 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations -0.241265 2.47803e-008 -0.107313 0.23927 [ [.25434 .11946 -14.25 -12.5 ] [.25434 .11946 14.25 0 ] [.50214 .11946 -14.25 -12.5 ] [.50214 .11946 14.25 0 ] [.74995 .11946 -14.25 -12.5 ] [.74995 .11946 14.25 0 ] [.99775 .11946 -14.25 -12.5 ] [.99775 .11946 14.25 0 ] [-0.00596 .01232 -18 -4.5 ] [-0.00596 .01232 0 4.5 ] [-0.00596 .25159 -18 -4.5 ] [-0.00596 .25159 0 4.5 ] [-0.00596 .37123 -6 -4.5 ] [-0.00596 .37123 0 4.5 ] [-0.00596 .49086 -18 -4.5 ] [-0.00596 .49086 0 4.5 ] [-0.00596 .6105 -6 -4.5 ] [-0.00596 .6105 0 4.5 ] [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 g .25 Mabswid [ ] 0 setdash .25434 .13196 m .25434 .13821 L s gsave .25434 .11946 -14.25 -10.5 Mabsadd m 1 1 Mabs scale /Courier findfont 10 scalefont setfont (2) show /Math1Mono findfont 10 scalefont setfont (\\264) show /Courier findfont 10 scalefont setfont (10) show 0 5.25 rmoveto /Courier findfont 7.5 scalefont setfont (7) show grestore .50214 .13196 m .50214 .13821 L s gsave .50214 .11946 -14.25 -10.5 Mabsadd m 1 1 Mabs scale /Courier findfont 10 scalefont setfont (3) show /Math1Mono findfont 10 scalefont setfont (\\264) show /Courier findfont 10 scalefont setfont (10) show 0 5.25 rmoveto /Courier findfont 7.5 scalefont setfont (7) show grestore .74995 .13196 m .74995 .13821 L s gsave .74995 .11946 -14.25 -10.5 Mabsadd m 1 1 Mabs scale /Courier findfont 10 scalefont setfont (4) show /Math1Mono findfont 10 scalefont setfont (\\264) show /Courier findfont 10 scalefont setfont (10) show 0 5.25 rmoveto /Courier findfont 7.5 scalefont setfont (7) show grestore .99775 .13196 m .99775 .13821 L s gsave .99775 .11946 -14.25 -10.5 Mabsadd m 1 1 Mabs scale /Courier findfont 10 scalefont setfont (5) show /Math1Mono findfont 10 scalefont setfont (\\264) show /Courier findfont 10 scalefont setfont (10) show 0 5.25 rmoveto /Courier findfont 7.5 scalefont setfont (7) show grestore .125 Mabswid .0561 .13196 m .0561 .13571 L s .10566 .13196 m .10566 .13571 L s .15522 .13196 m .15522 .13571 L s .20478 .13196 m .20478 .13571 L s .3039 .13196 m .3039 .13571 L s .35346 .13196 m .35346 .13571 L s .40302 .13196 m .40302 .13571 L s .45258 .13196 m .45258 .13571 L s .5517 .13196 m .5517 .13571 L s .60126 .13196 m .60126 .13571 L s .65083 .13196 m .65083 .13571 L s .70039 .13196 m .70039 .13571 L s .79951 .13196 m .79951 .13571 L s .84907 .13196 m .84907 .13571 L s .89863 .13196 m .89863 .13571 L s .94819 .13196 m .94819 .13571 L s .25 Mabswid 0 .13196 m 1 .13196 L s .00654 .01232 m .01279 .01232 L s [(0.5)] -0.00596 .01232 1 0 Mshowa .00654 .25159 m .01279 .25159 L s [(1.5)] -0.00596 .25159 1 0 Mshowa .00654 .37123 m .01279 .37123 L s [(2)] -0.00596 .37123 1 0 Mshowa .00654 .49086 m .01279 .49086 L s [(2.5)] -0.00596 .49086 1 0 Mshowa .00654 .6105 m .01279 .6105 L s [(3)] -0.00596 .6105 1 0 Mshowa .125 Mabswid .00654 .03625 m .01029 .03625 L s .00654 .06018 m .01029 .06018 L s .00654 .0841 m .01029 .0841 L s .00654 .10803 m .01029 .10803 L s .00654 .15588 m .01029 .15588 L s .00654 .17981 m .01029 .17981 L s .00654 .20374 m .01029 .20374 L s .00654 .22767 m .01029 .22767 L s .00654 .27552 m .01029 .27552 L s .00654 .29945 m .01029 .29945 L s .00654 .32337 m .01029 .32337 L s .00654 .3473 m .01029 .3473 L s .00654 .39515 m .01029 .39515 L s .00654 .41908 m .01029 .41908 L s .00654 .44301 m .01029 .44301 L s .00654 .46694 m .01029 .46694 L s .00654 .51479 m .01029 .51479 L s .00654 .53872 m .01029 .53872 L s .00654 .56264 m .01029 .56264 L s .00654 .58657 m .01029 .58657 L s .25 Mabswid .00654 0 m .00654 .61803 L s 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath gsave .02381 .60332 -72 -10.2813 Mabsadd m 1 1 Mabs scale currentpoint translate 0 20.5625 translate 1 -1 scale 63.000 12.813 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 12.813 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (IBM) show 81.000 12.813 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore gsave .73167 .39037 -75 -10.2813 Mabsadd m 1 1 Mabs scale currentpoint translate 0 20.5625 translate 1 -1 scale 63.000 12.813 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 12.813 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (MSFT) show 87.000 12.813 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore gsave .97619 .01472 -75 -10.2813 Mabsadd m 1 1 Mabs scale currentpoint translate 0 20.5625 translate 1 -1 scale 63.000 12.813 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 12.813 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (SUNW) show 87.000 12.813 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore % End of Graphics MathPictureEnd \ \>"], "Graphics", CellLabel->"From In[33]:=", ImageSize->{288, 177.938}, ImageMargins->{{0, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgoGXd`030000 mNSCmNSC033ej=<00`000?GXdoGXd`0_mNSC00<0003ej=?ej=<0;oGXd`400001mNSC000@mNSC00<0 003ej=?ej=<0>_GXd`030000mNSCmNSC033ej=<00`000?GXdoGXd`0_mNSC00<0003ej=?ej=<0;oGX d`400001mNSC000@mNSC00<0003ej=?ej=<0>OGXd`80000amNSC0P00033ej=<20000?GXd`004?GXd`030000mNSCmNSC08Sej=<00`000?GXd`000002mNSC00<0003ej=<000000_GX d`030000mNSC000000;ej=<30000>OGXd`004?GXd`030000mNSCmNSC08Oej=<01@000?GXdoGXdoGX d`000002mNSC0P0000;ej=<300000_GXd`<0000imNSC000@mNSC00<0003ej=?ej=<0doGXd`004?GX d`030000mNSCmNSC0=?ej=<0013ej=<20000e?GXd`004?GXd`030000mNSCmNSC0=?ej=<0013ej=<0 0`000?GXdoGXd`3CmNSC000@mNSC00<0003ej=?ej=<0doGXd`004?GXd`030000mNSCmNSC0=?ej=<0 013ej=<20000e?GXd`004?GXd`030000mNSCmNSC0=?ej=<0013ej=<00`000?GXdoGXd`3CmNSC000@ mNSC00<0003ej=?ej=<0doGXd`004?GXd`80003DmNSC000@mNSC00<0003ej=?ej=<0doGXd`004?GX d`030000mNSCmNSC0=?ej=<0013ej=<00`000?GXdoGXd`3CmNSC000300000oGXd`040000mNSCmNSC mNSC0`0000?ej=<00`000?GXdoGXd`3CmNSC000200002_GXd`040000mNSCmNSCmNSC0`000=?ej=<0 00;ej=<00`000?GXdoGXd`07mNSC00D0003ej=?ej=?ej=<00000eOGXd`000_GXd`030000mNSCmNSC 00Gej=<200001?GXd`030000mNSCmNSC0=?ej=<000<00007mNSC0`0000?ej=<00`000?GXdoGXd`3C mNSC000@mNSC00<0003ej=?ej=<0doGXd`004?GXd`80003DmNSC000@mNSC00<0003ej=?ej=<0doGX d`004?GXd`030000mNSCmNSC0=?ej=<0013ej=<00`000?GXdoGXd`3CmNSC000@mNSC00<0003ej=?e j=<0doGXd`004?GXd`80003DmNSC000@mNSC00<0003ej=?ej=<0doGXd`004?GXd`030000mNSCmNSC 0=?ej=<0013ej=<00`000?GXdoGXd`3CmNSC000@mNSC00<0003ej=?ej=<0doGXd`004?GXd`80003D mNSC000@mNSC00<0003ej=?ej=<0doGXd`004?GXd`030000mNSCmNSC0=?ej=<0013ej=<00`000?GX doGXd`3CmNSC000@mNSC00<0003ej=?ej=<0doGXd`004?GXd`80003DmNSC000@mNSC00<0003ej=?e j=<0doGXd`003_GXd`<000000oGXd`0000000002000000Cej=<00000003ej=<20000b_GXd`003oGX d`800002mNSC00T0003ej=<0003ej=<0003ej=<0003ej=<00000b_GXd`002_GXd`<00002mNSC0P00 00;ej=<200000_GXd`<000000oGXd`000?GXd`39mNSC000"], ImageRangeCache->{{{0, 229.375}, {141.313, 0}} -> {6.63032*^06, 0.294039, \ 159174, 0.016485}}], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output", CellLabel->"Out[34]="] }, Closed]], Cell["\<\ Now let's do the same thing using XPath to extract the information:\ \ \>", "Text"], Cell[CellGroupData[{ Cell["\<\ stockDOM = \ MakeDOM[\"http://www.xmltoday.com/examples/stockquote/getxmlquote.vep?s=IBM+\ MSFT+SUNW\"]; highs = ToExpression /@ Last /@ XPathApply[stockDOM, \ \"//stock_quote/price[@type='dayhigh']/@value\"]; lows = ToExpression /@ Last /@ XPathApply[stockDOM, \ \"//stock_quote/price[@type='daylow']/@value\"]; tickers = XPathApply[stockDOM, \"//stock_quote/symbol/text()\"]; volume = ToExpression /@ XPathApply[stockDOM, \ \"//stock_quote/volume/text()\"]; Transpose[{volume, highs - lows, tickers}]\ \>", "Input", CellLabel->"In[35]:=", CellMargins->{{Inherited, 0}, {Inherited, Inherited}}, CellHorizontalScrolling->True, LineBreakWithin->Automatic], Cell[BoxData[ \({{10697000, 2.969999999999999`, "IBM"}, {39262300, 2.0799999999999983`, "MSFT"}, {49130000, 0.5099999999999998`, "SUNW"}}\)], "Output", CellLabel->"Out[40]="] }, Closed]], Cell["\<\ XSLTransform[input_, xsl_String] := \tJavaBlock[ \t\tModule[{dom, factory, transformer, resultDOM}, \t\t\tdom = MakeDOM[input]; \t\t\tLoadClass[\"javax.xml.transform.TransformerFactory\"]; \t\t\tfactory = TransformerFactory`newInstance[]; \t\t\ttransformer = \ factory@newTransformer[JavaNew[\"javax.xml.transform.stream.StreamSource\", \ toFileURL[xsl]]]; \t\t\tresultDOM = JavaNew[\"javax.xml.transform.dom.DOMResult\"]; \t\t\ttransformer@transform[JavaNew[\"javax.xml.transform.dom.DOMSource\", \ dom], resultDOM]; \t\t\tToSymbolicXML[resultDOM@getNode[]] \t\t] \t] XPathApply[input_, xpath_String] := \tJavaBlock[ \t\tModule[{dom, list}, \t\t\tdom = MakeDOM[input]; \t\t\tLoadClass[\"org.apache.xpath.XPathAPI\"]; \t\t\tlist = XPathAPI`selectNodeList[dom, xpath]; \t\t\tIf[list === Null, \t\t\t\t{}, \t\t\t(* else *) \t\t\t\tToSymbolicXML[list@item[#]]& /@ Range[0, list@getLength[] - 1] \t\t\t] \t\t] // Map[Replace[#, XMLObject[\"XMLDocument\"][_, elmnts_XMLElement, ___] \ -> elmnts]&, #]& \t]\ \>", "Program", CellOpen->False, FontSize->12] }, Closed]] }, FrontEndVersion->"4.1 for Microsoft Windows", ScreenRectangle->{{0, 1280}, {0, 951}}, ScreenStyleEnvironment->"Presentation", WindowSize->{943, 718}, WindowMargins->{{3, Automatic}, {Automatic, -2}}, PrintingCopies->1, PrintingPageRange->{Automatic, Automatic}, StyleDefinitions -> Notebook[{ Cell[CellGroupData[{ Cell["Style Definitions", "Subtitle"], Cell["\<\ Modify the definitions below to change the default appearance of \ all cells in a given style. Make modifications to any definition using \ commands in the Format menu.\ \>", "Text"], Cell[CellGroupData[{ Cell["Style Environment Names", "Subsection"], Cell[StyleData[All, "Working"], CellBracketOptions->{"Thickness"->1, "Color"->RGBColor[0.500008, 0.6, 1]}, ScriptMinSize->9], Cell[StyleData[All, "Presentation"], CellMargins->{{Inherited, 120}, {Inherited, Inherited}}, ScriptMinSize->9], Cell[StyleData[All, "Markup"], ScriptMinSize->9], Cell[StyleData[All, "Printout"], PageWidth->PaperWidth, ShowCellBracket->False, Hyphenation->True, PrivateFontOptions->{"FontType"->"Outline"}] }, Open ]], Cell[CellGroupData[{ Cell["Notebook Options", "Subsection"], Cell["\<\ The options defined for the style below will be used at the \ Notebook level. \ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["Notebook"], PageHeaders->{{Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"], None, Cell[ TextData[ { OptionValueBox[ "FileName"]}], "Header"]}, {Cell[ TextData[ { OptionValueBox[ "FileName"]}], "Header"], None, Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"]}}, PrintingOptions->{"FirstPageHeader"->False, "FacingPages"->True}, CellLabelAutoDelete->False, CellFrameLabelMargins->6, DefaultNewCellStyle->"Text", InputAutoReplacements->{"TeX"->StyleBox[ RowBox[ {"T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "LaTeX"->StyleBox[ RowBox[ {"L", StyleBox[ AdjustmentBox[ "A", BoxMargins -> {{-0.36, -0.1}, {0, -0}}, BoxBaselineShift -> -0.2], FontSize -> Smaller], "T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "mma"->"Mathematica", "Mma"->"Mathematica", "MMA"->"Mathematica"}, StyleMenuListing->None], Cell[StyleData["Notebook", "Presentation"], PageHeaders->{{Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"], None, Cell[ TextData[ { OptionValueBox[ "FileName"]}], "Header"]}, {Cell[ TextData[ { OptionValueBox[ "FileName"]}], "Header"], None, Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"]}}, PrintingOptions->{"FirstPageHeader"->False, "FacingPages"->True}, CellMargins->{{Inherited, 120}, {Inherited, Inherited}}, CellLabelAutoDelete->False, CellFrameLabelMargins->6, DefaultNewCellStyle->"Text", InputAutoReplacements->{"TeX"->StyleBox[ RowBox[ {"T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "LaTeX"->StyleBox[ RowBox[ {"L", StyleBox[ AdjustmentBox[ "A", BoxMargins -> {{-0.36, -0.1}, {0, -0}}, BoxBaselineShift -> -0.2], FontSize -> Smaller], "T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "mma"->"Mathematica", "Mma"->"Mathematica", "MMA"->"Mathematica"}, StyleMenuListing->None, Background->RGBColor[0.959991, 0.908461, 0.825605]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Style Menu Shortcuts", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["Section"], CellMargins->{{12, 12}, {3, 24}}, CellGroupingRules->{"SectionGrouping", 10}, PageBreakBelow->False, ParagraphIndent->-25, TabSpacings->2.1, CounterIncrements->"Section", CounterAssignments->{{"Subsection", 0}}, StyleMenuListing->"Head1", FontFamily->"Helvetica", FontSize->24, FontWeight->"Bold"], Cell[StyleData["Section", "Presentation"], CellMargins->{{18, 120}, {3, 28}}, CellFrameMargins->{{8, 1}, {1, 1}}, FontFamily->"Arial", FontColor->GrayLevel[1], Background->RGBColor[0.258061, 0.387091, 0.612909]], Cell[StyleData["Section", "Printout"], CellMargins->{{2, 12}, {3, 18}}, FontSize->12, FontColor->GrayLevel[0]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["SectionDingbat"], CellSize->{24, Inherited}, TextAlignment->Left, StyleMenuListing->None], Cell[StyleData["SectionDingbat", "Printout"], CellSize->{19, Inherited}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["SectionNumber"], StyleMenuListing->None, FontSize->12], Cell[StyleData["SectionNumber", "Printout"], StyleMenuListing->None, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subsection"], CellDingbat->None, CellMargins->{{12, 12}, {8, 12}}, CellElementSpacings->{"ClosedGroupTopMargin"->12}, CellGroupingRules->{"SectionGrouping", 20}, PageBreakBelow->False, CellFrameLabelMargins->6, ParagraphIndent->-18, TabSpacings->1.7, CounterIncrements->"Subsection", CounterAssignments->{{"Subsubsection", 0}}, StyleMenuListing->"Head2", FontFamily->"Helvetica", FontSize->18, FontWeight->"Bold"], Cell[StyleData["Subsection", "Presentation"], CellMargins->{{18, 120}, {8, 15}}, FontFamily->"Arial", FontColor->RGBColor[0.161288, 0.258061, 0.419348]], Cell[StyleData["Subsection", "Printout"], CellMargins->{{2, 12}, {2, 5}}, FontSize->10, FontColor->GrayLevel[0]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["SubsectionDingbat"], CellSize->{18, Inherited}, TextAlignment->Left, StyleMenuListing->None], Cell[StyleData["SubsectionDingbat", "Printout"], CellSize->{12, Inherited}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["SubsectionNumber"], StyleMenuListing->None, FontSize->10, CounterBoxOptions->{CounterFunction:>(Part[ CharacterRange[ "A", "Z"], #]&)}], Cell[StyleData["SubsectionNumber", "Printout"], FontSize->8] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subsubsection"], CellMargins->{{12, 12}, {3, 6}}, CellElementSpacings->{"ClosedGroupTopMargin"->12}, CellGroupingRules->{"SectionGrouping", 30}, PageBreakBelow->False, CounterIncrements->"Subsubsection", CounterAssignments->{{"Subsubsubsection", 0}}, StyleMenuListing->"Head3", FontSize->14, FontWeight->"Bold", FontColor->GrayLevel[0.300008], CounterBoxOptions->{CounterFunction:>Identity}], Cell[StyleData["Subsubsection", "Printout"], CellMargins->{{2, 12}, {1, 4}}, FontSize->10, FontColor->GrayLevel[0]], Cell[StyleData["Subsubsection", "Presentation"], CellMargins->{{42, 120}, {1, 4}}, FontFamily->"Arial", FontSize->16, FontColor->RGBColor[0.3608, 0.3608, 0.439994]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Subsubsubsection"], CellMargins->{{12, 12}, {3, 6}}, CellGroupingRules->{"SectionGrouping", 40}, CounterIncrements->"Subsubsubsection", StyleMenuListing->"Head4", FontWeight->"Bold", FontSlant->"Italic", FontColor->GrayLevel[0.300008]], Cell[StyleData["Subsubsubsection", "Presentation"], CellMargins->{{72, 120}, {1, 4}}, FontFamily->"Arial", FontColor->RGBColor[0.500206, 0.500206, 0.609995]], Cell[StyleData["Subsubsubsection", "Printout"], CellMargins->{{2, 12}, {1, 4}}, FontSize->10, FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["EquationNumbered"], CellMargins->{{36, 6}, {7, 7}}, CellHorizontalScrolling->True, CellFrameLabels->{{None, Cell[ TextData[ {"(", CounterBox[ "Equation"], ")"}]]}, {None, None}}, DefaultFormatType->DefaultInputFormatType, InputAutoReplacements->{}, ShowAutoStyles->False, CounterIncrements->"Equation", FormatTypeAutoConvert->False], Cell[StyleData["EquationNumbered", "Presentation"], CellMargins->{{72, 120}, {15, 15}}, FontSize->18], Cell[StyleData["EquationNumbered", "Printout"], CellMargins->{{21, 6}, {5, 5}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Equation"], CellMargins->{{36, 10}, {7, 7}}, CellHorizontalScrolling->True, DefaultFormatType->DefaultInputFormatType, InputAutoReplacements->{}, ShowAutoStyles->False, CounterIncrements->"Equation"], Cell[StyleData["Equation", "Presentation"], CellMargins->{{72, 120}, {15, 15}}, FontSize->18, FontVariations->{"CompatibilityType"->0}], Cell[StyleData["Equation", "Printout"], CellMargins->{{21, 6}, {5, 5}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Text"], CellMargins->{{12, 10}, {3, 5}}, TextAlignment->Left, LineSpacing->{1, 3}, CounterIncrements->"Text", FontFamily->"Times", FontSize->12], Cell[StyleData["Text", "Presentation"], CellMargins->{{72, 120}, {8, 4}}, FontFamily->"Arial", FontSize->15, FontWeight->"Bold"], Cell[StyleData["Text", "Printout"], CellMargins->{{2, 10}, {1, 4}}, TextJustification->1, FontSize->10] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["InputNumbered"], CellMargins->{{36, 10}, {6, 8}}, Evaluatable->True, CellGroupingRules->"InputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, CellFrameLabels->{{None, Cell[ BoxData[ FormBox[ StyleBox[ RowBox[ {"(", CounterBox[ "Equation"], ")"}], FontWeight -> "Plain"], TraditionalForm]]]}, {None, None}}, DefaultFormatType->DefaultInputFormatType, InputAutoReplacements->{}, HyphenationOptions->{"HyphenationCharacter"->"\[Continuation]"}, AutoItalicWords->{}, LanguageCategory->"Formula", FormatType->InputForm, ShowStringCharacters->True, NumberMarks->True, LinebreakAdjustments->{0.85, 2, 10, 0, 1}, CounterIncrements->"Input", FontWeight->"Bold"], Cell[StyleData["InputNumbered", "Presentation"], CellMargins->{{72, 120}, {10, 10}}, LinebreakAdjustments->{0.85, 2, 10, 1, 1}, FontSize->14], Cell[StyleData["InputNumbered", "Printout"], CellMargins->{{21, 6}, {3, 6}}, LinebreakAdjustments->{0.85, 2, 10, 1, 1}, FontSize->9] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Input"], CellMargins->{{36, 10}, {6, 8}}, Evaluatable->True, CellGroupingRules->"InputGrouping", PageBreakWithin->False, GroupPageBreakWithin->False, DefaultFormatType->DefaultInputFormatType, InputAutoReplacements->{}, HyphenationOptions->{"HyphenationCharacter"->"\[Continuation]"}, AutoItalicWords->{}, LanguageCategory->"Formula", FormatType->InputForm, ShowStringCharacters->True, NumberMarks->True, LinebreakAdjustments->{0.85, 2, 10, 0, 1}, CounterIncrements->"Input", FontWeight->"Bold"], Cell[StyleData["Input", "Presentation"], CellMargins->{{108, 10}, {10, 10}}, LinebreakAdjustments->{0.85, 2, 10, 1, 1}, FontSize->14, FontVariations->{"CompatibilityType"->0}], Cell[StyleData["Input", "Printout"], CellMargins->{{21, 6}, {3, 6}}, LinebreakAdjustments->{0.85, 2, 10, 1, 1}, FontSize->9] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Miscellaneous Frontmatter", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["Author"], CellMargins->{{36, 54}, {1, 18}}, CellGroupingRules->"NormalGrouping", ParagraphSpacing->{0, 0}, StyleMenuListing->None, FontFamily->"Helvetica", FontSize->12, FontWeight->"Bold"], Cell[StyleData["Author", "Presentation"], ShowCellBracket->False, CellMargins->{{0, 0}, {20, 0}}, CellFrameMargins->{{73, 4}, {2, 6}}, CellFrameLabelMargins->False, FontFamily->"Arial", FontSize->18, FontColor->GrayLevel[1], Background->RGBColor[0.2, 0.4, 0.6]], Cell[StyleData["Author", "Printout"], CellMargins->{{21, 10}, {0, 18}}, FontSize->10] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Address"], CellMargins->{{36, 54}, {0, 3}}, CounterIncrements->"Address", StyleMenuListing->None, FontFamily->"Times", FontSize->12, FontColor->GrayLevel[0.2]], Cell[StyleData["Address", "Printout"], CellMargins->{{21, 10}, {0, 2}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Email"], CellMargins->{{36, 54}, {0, 0}}, ParagraphSpacing->{0, 8}, StyleMenuListing->None, FontFamily->"Courier", FontSize->10, FontColor->GrayLevel[0.2]], Cell[StyleData["Email", "Printout"], CellMargins->{{21, 10}, {0, 0}}, LineSpacing->{1, 1}, FontSize->8] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["AbstractText"], CellFrame->{{0, 0}, {0.25, 0.25}}, CellMargins->{{36, 54}, {3, 24}}, CellGroupingRules->{"SectionGrouping", 50}, CellFrameMargins->5, TextAlignment->Left, LineSpacing->{1, 1}, StyleMenuListing->None, FontSize->12, FontColor->RGBColor[0, 0, 0.500008]], Cell[StyleData["AbstractText", "Printout"], CellMargins->{{21, 86}, {2, 14}}, CellFrameMargins->3, FontSize->9] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Date"], CellMargins->{{36, 54}, {6, 3}}, ParagraphSpacing->{0, 8}, StyleMenuListing->None, FontFamily->"Helvetica", FontSize->9], Cell[StyleData["Date", "Printout"], CellMargins->{{21, 10}, {3, 2}}, LineSpacing->{1, 1}, FontSize->7] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell["Miscellaneous Text", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["Theorem"], CellMargins->{{12, 10}, {3, 5}}, LineSpacing->{1, 3}, CounterIncrements->"Theorem"], Cell[StyleData["Theorem", "Printout"], CellMargins->{{2, 2}, {1, 4}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Lemma"], CellMargins->{{12, 10}, {3, 5}}, LineSpacing->{1, 3}, CounterIncrements->"Lemma"], Cell[StyleData["Lemma", "Printout"], CellMargins->{{2, 2}, {1, 4}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Program"], PageWidth->Infinity, CellFrame->{{0, 0}, {1, 1}}, CellMargins->{{72, 0}, {7, 7}}, CellFrameMargins->{{12, 10}, {7, 5}}, InputAutoReplacements->{}, FontFamily->"Courier"], Cell[StyleData["Program", "Printout"], CellMargins->{{21, 0}, {5, 5}}, FontSize->9.5] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Item1"], CellMargins->{{12, 4}, {2, 4}}, ParagraphIndent->-24, CounterIncrements->"Item1"], Cell[StyleData["Item1", "Printout"], CellMargins->{{3, 0}, {1, 3}}, ParagraphIndent->-18, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Item1Paragraph"], CellMargins->{{36, 4}, {4, 2}}], Cell[StyleData["Item1Paragraph", "Printout"], CellMargins->{{21, 0}, {3, 1}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Item2"], CellMargins->{{21, 4}, {2, 4}}, ParagraphIndent->-24, CounterIncrements->"Item2"], Cell[StyleData["Item2", "Printout"], CellMargins->{{12, 0}, {1, 3}}, ParagraphIndent->-18, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Item2Paragraph"], CellMargins->{{45, 4}, {4, 2}}, StyleMenuListing->None], Cell[StyleData["Item2Paragraph", "Printout"], CellMargins->{{30, 0}, {3, 1}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Item3"], CellMargins->{{31, 4}, {2, 4}}, ParagraphIndent->-24, CounterIncrements->"Item3"], Cell[StyleData["Item3", "Printout"], CellMargins->{{21, 0}, {1, 3}}, ParagraphIndent->-18, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Item3Paragraph"], CellMargins->{{55, 4}, {4, 2}}, StyleMenuListing->None], Cell[StyleData["Item3Paragraph", "Printout"], CellMargins->{{39, 0}, {3, 1}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["ItemDingbat"], CellSize->{24, Inherited}, TextAlignment->Right, StyleMenuListing->None, FontWeight->"Bold"], Cell[StyleData["ItemDingbat", "Printout"], CellSize->{18, Inherited}, FontSize->10] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Miscellaneous Input/Output", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["Output"], CellMargins->{{36, 10}, {7, 5}}, CellEditDuplicate->True, CellGroupingRules->"OutputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, DefaultFormatType->DefaultOutputFormatType, InputAutoReplacements->{}, HyphenationOptions->{"HyphenationCharacter"->"\[Continuation]"}, AutoItalicWords->{}, LanguageCategory->"Formula", FormatType->InputForm, CounterIncrements->"Output", StyleMenuListing->None], Cell[StyleData["Output", "Presentation"], CellMargins->{{117, 0}, {6, 3}}, FontSize->16], Cell[StyleData["Output", "Printout"], CellMargins->{{21, 0}, {6, 3}}, FontSize->9] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Graphics"], CellMargins->{{36, 0}, {8, 6}}, CellGroupingRules->"GraphicsGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, ShowCellLabel->False, DefaultFormatType->DefaultOutputFormatType, InputAutoReplacements->{}, LanguageCategory->None, FormatType->InputForm, CounterIncrements->"Graphics", ImageMargins->{{0, 0}, {0, 0}}, StyleMenuListing->None, FontSize->12], Cell[StyleData["Graphics", "Presentation"], CellMargins->{{27, 0}, {6, 3}}, ImageMargins->{{0, 0}, {0, 0}}, FontSize->14, Magnification->0.8], Cell[StyleData["Graphics", "Printout"], CellMargins->{{27, 0}, {6, 3}}, ImageMargins->{{0, 0}, {0, 0}}, Magnification->0.8] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Figure, Picture, and Tables", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["TableHead"], PageWidth->530, CellMargins->{{38, 10}, {1, 7}}, LineSpacing->{1, 2}, CounterIncrements->"TableHead", StyleMenuListing->None, FontFamily->"Times", FontWeight->"Bold", GridBoxOptions->{ColumnWidths->40, ColumnAlignments->{Left}}], Cell[StyleData["TableHead", "Printout"], CellMargins->{{23, 10}, {1, 5}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Table"], PageWidth->530, CellMargins->{{36, 10}, {1, 1}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.503, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["Table", "Printout"], CellMargins->{{21, 10}, {1, 1}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["TablePlain"], PageWidth->530, CellMargins->{{36, 10}, {7, 7}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.503, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["TablePlain", "Printout"], CellMargins->{{21, 10}, {5, 5}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["3ColumnTable"], PageWidth->530, CellMargins->{{36, 10}, {1, 1}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.336, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["3ColumnTable", "Printout"], CellMargins->{{21, 10}, {1, 1}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["3ColumnTablePlain"], PageWidth->530, CellMargins->{{36, 10}, {7, 7}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.336, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["3ColumnTablePlain", "Printout"], CellMargins->{{21, 10}, {5, 5}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["4ColumnTable"], PageWidth->530, CellMargins->{{36, 10}, {1, 1}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.251, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["4ColumnTable", "Printout"], CellMargins->{{21, 10}, {1, 1}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["4ColumnTablePlain"], PageWidth->530, CellMargins->{{36, 10}, {7, 7}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.251, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["4ColumnTablePlain", "Printout"], CellMargins->{{21, 10}, {5, 5}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["5ColumnTable"], PageWidth->530, CellMargins->{{36, 10}, {1, 1}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.201, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["5ColumnTable", "Printout"], CellMargins->{{21, 10}, {1, 1}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["5ColumnTablePlain"], PageWidth->530, CellMargins->{{36, 10}, {7, 7}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.201, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["5ColumnTablePlain", "Printout"], CellMargins->{{21, 10}, {5, 5}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["TableNote"], PageWidth->530, CellMargins->{{38, 10}, {7, 1}}, LineSpacing->{1, 1}, ParagraphSpacing->{0.3, 0}, StyleMenuListing->None, FontFamily->"Times", FontSize->10], Cell[StyleData["TableNote", "Printout"], CellMargins->{{23, 10}, {5, 1}}, FontSize->9] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Figure"], CellMargins->{{36, Inherited}, {0, 7}}, CellHorizontalScrolling->True], Cell[StyleData["Figure", "Printout"], CellMargins->{{27, Inherited}, {0, 5}}, Magnification->0.8] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Picture"], CellMargins->{{36, Inherited}, {0, 7}}, CellHorizontalScrolling->True], Cell[StyleData["Picture", "Presentation"], CellMargins->{{72, 120}, {0, 5}}, Magnification->1.5], Cell[StyleData["Picture", "Printout"], CellMargins->{{27, Inherited}, {0, 5}}, Magnification->0.8] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Caption"], CellMargins->{{36, 10}, {10, 3}}, PageBreakAbove->False, FontFamily->"Helvetica", FontSize->9], Cell[StyleData["Caption", "Printout"], CellMargins->{{21, 10}, {4, 0}}, TextJustification->1, FontSize->7] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["GraphicHeader"], ShowCellBracket->False, CellMargins->{{0, 0}, {0, 0}}, CellFrameMargins->{{55, 20}, {0, 0}}, CellFrameLabelMargins->False, StyleMenuListing->None, FontColor->GrayLevel[1], Background->GrayLevel[0]], Cell[StyleData["GraphicHeader", "Printout"], CellFrameMargins->{{5, 20}, {0, 0}}] }, Open ]], Cell[CellGroupData[{ Cell["Inline Styles for Tables", "Subsubsection"], Cell[CellGroupData[{ Cell[StyleData["TableHeadText"], CounterIncrements->"TableHead", StyleMenuListing->None, FontFamily->"Times", FontWeight->"Plain"], Cell[StyleData["TableHeadText", "Printout"], FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["ColumnHead"], CounterIncrements->"Table", StyleMenuListing->None, FontFamily->"Times", FontSlant->"Italic"], Cell[StyleData["ColumnHead", "Printout"], FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["TableText"], TextAlignment->Left, LineSpacing->{1, 1}, StyleMenuListing->None, FontFamily->"Times", FontSize->12], Cell[StyleData["TableText", "Printout"], FontSize->10] }, Closed]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Miscellaneous Endmatter", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["AcknowledgementsHead"], CellMargins->{{12, 12}, {10, 24}}, CellGroupingRules->{"SectionGrouping", 10}, PageBreakBelow->False, StyleMenuListing->None, FontFamily->"Helvetica", FontSize->12, FontWeight->"Bold", FontColor->GrayLevel[0.300008]], Cell[StyleData["AcknowledgementsHead", "Printout"], CellMargins->{{12, 12}, {10, 18}}, FontSize->10, FontColor->GrayLevel[0]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["AppendixHead"], CellMargins->{{12, 12}, {10, 24}}, CellGroupingRules->{"SectionGrouping", 10}, PageBreakBelow->False, CounterIncrements->"Appendix", StyleMenuListing->None, FontFamily->"Helvetica", FontSize->14, FontWeight->"Bold", FontColor->GrayLevel[0.300008]], Cell[StyleData["AppendixHead", "Printout"], CellMargins->{{12, 12}, {10, 18}}, FontSize->10, FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["AppendixEquation"], CellMargins->{{36, 6}, {7, 7}}, CellFrameLabels->{{None, Cell[ TextData[ {"(A", CounterBox[ "Appendix"], ".", CounterBox[ "AppendixEquation"], ")"}]]}, {None, None}}, DefaultFormatType->DefaultInputFormatType, InputAutoReplacements->{}, CounterIncrements->"AppendixEquation", FormatTypeAutoConvert->False], Cell[StyleData["AppendixEquation", "Printout"], FontSize->10] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Reference Elements", "Subsection"], Cell[StyleData["ReferencesHead"], CellFrame->{{0, 0}, {0.25, 0}}, CellMargins->{{12, 8}, {8, 24}}, CellGroupingRules->{"SectionGrouping", 10}, CounterAssignments->{{"Endnote", 0}}, StyleMenuListing->None, FontFamily->"Arial", FontSize->14, FontWeight->"Bold"], Cell[StyleData["EndNote"], CellMargins->{{24, 8}, {0, 0}}, ParagraphSpacing->{0, 0}, ParagraphIndent->-36, TabSpacings->5.5, CounterIncrements->"EndNote", StyleMenuListing->None], Cell[CellGroupData[{ Cell[StyleData["RefDingbat"], CellSize->{36, Inherited}, TextAlignment->Right, CounterIncrements->"RefDingbat", StyleMenuListing->None], Cell[StyleData["RefDingbat", "Printout"]] }, Closed]], Cell[StyleData["ReferencesEnd"], StyleMenuListing->None], Cell[CellGroupData[{ Cell[StyleData["Citation"], StyleMenuListing->None, FontColor->RGBColor[0.300008, 0, 0]], Cell[StyleData["Citation", "Markup"], CellSize->{60, 18}, FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], Cell[StyleData["Citation", "Printout"], StyleMenuListing->None, FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell["References Entity Styles", "Subsubsection"], Cell[CellGroupData[{ Cell[StyleData["RefAddressCity"], StyleMenuListing->None], Cell[StyleData["RefAddressCity", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefAddressState"], StyleMenuListing->None], Cell[StyleData["RefAddressState", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefArticleTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefArticleTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefAuthorFN"], StyleMenuListing->None], Cell[StyleData["RefAuthorFN", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefAuthorLN"], StyleMenuListing->None], Cell[StyleData["RefAuthorLN", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefAuthorMN"], StyleMenuListing->None], Cell[StyleData["RefAuthorMN", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefBookTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefBookTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefChapterTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefChapterTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefCollectionTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefCollectionTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefConferenceName"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefConferenceName", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefDay"], StyleMenuListing->None], Cell[StyleData["RefDay", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefEdition"], StyleMenuListing->None], Cell[StyleData["RefEdition", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefEditorFN"], StyleMenuListing->None], Cell[StyleData["RefEditorFN", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefEditorMN"], StyleMenuListing->None], Cell[StyleData["RefEditorMN", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefEditorLN"], StyleMenuListing->None], Cell[StyleData["RefEditorLN", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefElectronicTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefElectronicTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefEprint"], StyleMenuListing->None], Cell[StyleData["RefEprint", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefFPage"], StyleMenuListing->None], Cell[StyleData["RefFPage", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefHowPublished"], StyleMenuListing->None], Cell[StyleData["RefHowPublished", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefIssue"], StyleMenuListing->None], Cell[StyleData["RefIssue", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefInstitution"], StyleMenuListing->None], Cell[StyleData["RefInstitution", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefJournal"], StyleMenuListing->None], Cell[StyleData["RefJournal", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefLPage"], StyleMenuListing->None], Cell[StyleData["RefLPage", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefMisc"], StyleMenuListing->None], Cell[StyleData["RefMisc", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefMiscTitle"], StyleMenuListing->None], Cell[StyleData["RefMiscTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefMonth"], StyleMenuListing->None], Cell[StyleData["RefMonth", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefNote"], StyleMenuListing->None], Cell[StyleData["RefNote", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefOrganization"], StyleMenuListing->None], Cell[StyleData["RefOrganization", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefProceedingsTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefProceedingsTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefPublisher"], StyleMenuListing->None], Cell[StyleData["RefPublisher", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefReportTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefReportTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefSchool"], StyleMenuListing->None], Cell[StyleData["RefSchool", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefSchoolDept"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefSchoolDept", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefSeries"], StyleMenuListing->None], Cell[StyleData["RefSeries", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefThesisTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefThesisTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefURL"], StyleMenuListing->None], Cell[StyleData["RefURL", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefVolume"], StyleMenuListing->None, FontWeight->"Bold"], Cell[StyleData["RefVolume", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefYear"], StyleMenuListing->None], Cell[StyleData["RefYear", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefKind"], StyleMenuListing->None, FontSize->0.5, FontTracking->"Narrow"], Cell[StyleData["RefKind", "Markup"], FontSize->12, FontWeight->"Bold", FontTracking->"Plain", Background->RGBColor[0.408103, 0.769985, 0.757885]], Cell[StyleData["RefKind", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefType"], CellSize->{0, 12}, StyleMenuListing->None], Cell[StyleData["RefType", "Markup"], CellSize->{60, 18}, FontWeight->"Bold", FontColor->RGBColor[0.8, 0.2, 0.2]], Cell[StyleData["RefType", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefMarker"], CellSize->{0, 12}, StyleMenuListing->None], Cell[StyleData["RefMarker", "Markup"], CellSize->{6, 12}], Cell[StyleData["RefMarker", "Printout"], CellSize->{0, 12}] }, Closed]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Titles", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["Title"], CellMargins->{{12, 12}, {4, 36}}, CellGroupingRules->{"SectionGrouping", 10}, PageBreakBelow->False, LineSpacing->{1, 2}, FontSize->30, FontWeight->"Bold"], Cell[StyleData["Title", "Presentation"], CellFrame->False, ShowCellBracket->False, CellMargins->{{0, 0}, {0, 0}}, CellGroupingRules->{"SectionGrouping", 10}, PageBreakBelow->False, CellFrameMargins->{{73, 120}, {10, 25}}, CellFrameColor->RGBColor[0.356863, 0.529412, 0.94902], CellFrameLabelMargins->6, LineSpacing->{1, 2}, FontFamily->"Arial", FontSize->30, FontWeight->"Bold", FontColor->GrayLevel[1], Background->RGBColor[0.12903, 0.548394, 0.774197]], Cell[StyleData["Title", "Printout"], CellMargins->{{2, 10}, {2, 36}}, FontSize->24] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Subtitle"], CellMargins->{{12, 12}, {4, 6}}, PageBreakBelow->False, LineSpacing->{1, 0}, FontFamily->"Times", FontSize->20, FontSlant->"Italic", FontColor->RGBColor[0, 0, 0.500008]], Cell[StyleData["Subtitle", "Presentation"], CellFrame->False, ShowCellBracket->False, CellMargins->{{0, 0}, {0, 0}}, PageBreakBelow->False, CellFrameMargins->{{73, 0}, {15, 0}}, CellFrameColor->RGBColor[0.356863, 0.529412, 0.94902], LineSpacing->{1, 0}, FontSize->24, FontColor->GrayLevel[1], Background->RGBColor[0.12903, 0.548394, 0.774197]], Cell[StyleData["Subtitle", "Printout"], CellMargins->{{2, 10}, {2, 8}}, FontSize->16, FontWeight->"Plain", FontColor->GrayLevel[0]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Subsubtitle"], CellMargins->{{12, 12}, {2, 6}}, PageBreakBelow->False, FontFamily->"Times", FontSize->15, FontColor->RGBColor[0, 0, 0.500008]], Cell[StyleData["Subsubtitle", "Printout"], CellMargins->{{2, 10}, {2, 8}}, FontSize->13, FontColor->GrayLevel[0]] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell["Hyperlinks", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["GoBackLink"], ConversionRules:>{"TeX" -> {"", CompoundExpression[ #, ""]&, ""}}, StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 0.8], ButtonBoxOptions->{ButtonFunction:>FrontEndExecute[ { FrontEndToken[ FrontEnd`InputNotebook[ ], "HyperlinkGoBack"]}], Active->True, ButtonFrame->"None", ButtonNote->"Jump back"}], Cell[StyleData["GoBackLink", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["GoBackLink", "Printout"], FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Times", FontColor->RGBColor[0, 0, 0.8], ButtonBoxOptions->{ButtonFunction:>Null, Active->True, ButtonFrame->"None"}], Cell[StyleData["RefLink", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["RefLink", "Printout"], FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["XRefLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Times", FontColor->RGBColor[0, 0, 0.8], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookLocate[ #2]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["XRefLink", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["XRefLink", "Printout"], FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefReadEdit"], StyleMenuListing->None, FontColor->RGBColor[0, 0, 0.500008], ButtonBoxOptions->{ButtonFunction:>(CompoundExpression[ Needs[ "arXiv`arXivUtilities`"], Symbol[ "arXiv`arXivUtilities`EditCiteSuper"][ #]]&), ButtonEvaluator->Automatic, Active->True, ButtonFrame->"None"}], Cell[StyleData["RefReadEdit", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["RefReadEdit", "Printout"], FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefReadEditInline"], StyleMenuListing->None, FontColor->RGBColor[0, 0, 0.500008], ButtonBoxOptions->{ButtonFunction:>(CompoundExpression[ Needs[ "arXiv`arXivUtilities`"], Symbol[ "arXiv`arXivUtilities`EditCiteInline"][ #]]&), ButtonEvaluator->Automatic, Active->True, ButtonFrame->"None"}], Cell[StyleData["RefReadEditInline", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["RefReadEditInline", "Printout"], FontColor->GrayLevel[0]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Conformance", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["BibliographyHead"], CellMargins->{{12, 12}, {10, 24}}, CellGroupingRules->{"SectionGrouping", 10}, PageBreakBelow->False, StyleMenuListing->None, FontFamily->"Helvetica", FontSize->12, FontWeight->"Bold"], Cell[StyleData["BibliographyHead", "Printout"], CellMargins->{{12, 12}, {10, 18}}, FontSize->10, FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["ReferenceText"], CellMargins->{{12, 10}, {0, 0}}, LineSpacing->{1, 2}, ParagraphIndent->-38, CounterIncrements->"ReferenceText", StyleMenuListing->None], Cell[StyleData["ReferenceText", "Printout"], CellMargins->{{2, 2}, {0, 0}}, ParagraphIndent->-32] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Item"], CellMargins->{{18, 4}, {4, 4}}, ParagraphIndent->-24, CounterIncrements->"Item1", StyleMenuListing->None], Cell[StyleData["Item", "Printout"], CellMargins->{{12, 0}, {0, 8}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["ItemParagraph"], CellMargins->{{40, 4}, {2, 2}}, CounterIncrements->"Item1Continued", StyleMenuListing->None], Cell[StyleData["ItemParagraph", "Printout"], CellMargins->{{12, 0}, {0, 8}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["BibLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 1], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookLocate[ #2]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["BibLink", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["BibLink", "Printout"], FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["AuthorNoteLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Helvetica", FontColor->RGBColor[0, 0, 0.700008], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookLocate[ #2]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["AuthorNoteLink", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["AuthorNoteLink", "Printout"], FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["FootnoteLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Times", FontColor->RGBColor[0, 0, 0.8], ButtonBoxOptions->{ButtonFunction:>Null, Active->True, ButtonFrame->"None"}], Cell[StyleData["FootnoteLink", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["FootnoteLink", "Printout"], FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Tex"], StyleMenuListing->None], Cell[StyleData["Tex", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Thanks"], CellMargins->{{54, 54}, {0, 3}}, ParagraphSpacing->{0, 8}, StyleMenuListing->None, FontFamily->"Times", FontSize->10, FontSlant->"Italic"], Cell[StyleData["Thanks", "Printout"], CellMargins->{{2, 10}, {3, 3}}, LineSpacing->{1, 1}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Homepage"], CellMargins->{{54, 54}, {0, 3}}, ParagraphSpacing->{0, 8}, StyleMenuListing->None, FontFamily->"Times", FontSize->10, FontSlant->"Italic"], Cell[StyleData["Homepage", "Printout"], CellMargins->{{2, 10}, {3, 3}}, LineSpacing->{1, 1}, FontSize->10] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell["Emphasis Boxes and Pictures", "Section"], Cell[CellGroupData[{ Cell[StyleData["DefinitionBox"], CellFrame->0.5, CellMargins->{{10, 4}, {0, 8}}, CellHorizontalScrolling->True, PageBreakWithin->False, AutoIndent->False, AutoSpacing->False, ShowStringCharacters->True, LineIndent->0, StyleMenuListing->None, FontWeight->"Plain", Background->RGBColor[1, 0.6, 0.6], GridBoxOptions->{RowSpacings->1.5, ColumnSpacings->1, ColumnWidths->{0.3, 0.7}, ColumnAlignments->{Left}}], Cell[StyleData["DefinitionBox", "Printout"], CellMargins->{{2, 0}, {0, 8}}, FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["DefinitionBox", "EnhancedPrintout"], CellMargins->{{2, 4}, {0, 8}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["DefinitionBox", "EnhancedPrintoutNonGray"], CellMargins->{{2, 4}, {0, 8}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.999954]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["DefinitionBox3Col"], CellFrame->0.5, CellMargins->{{10, 4}, {0, 8}}, CellHorizontalScrolling->True, PageBreakWithin->False, AutoIndent->False, AutoSpacing->False, ShowStringCharacters->True, LineIndent->0, StyleMenuListing->None, FontWeight->"Plain", Background->RGBColor[1, 0.6, 0.6], GridBoxOptions->{RowSpacings->1.5, ColumnSpacings->1, ColumnWidths->{0.2, 0.3, 0.5}, ColumnAlignments->{Left}}], Cell[StyleData["DefinitionBox3Col", "Printout"], CellMargins->{{2, 4}, {0, 8}}, FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["DefinitionBox3Col", "EnhancedPrintout"], CellMargins->{{2, 4}, {0, 8}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["DefinitionBox3Col", "EnhancedPrintoutNonGray"], CellMargins->{{2, 4}, {0, 8}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.999954]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["DefinitionBox4Col"], CellFrame->0.5, CellMargins->{{10, 4}, {0, 8}}, CellHorizontalScrolling->True, PageBreakWithin->False, AutoIndent->False, AutoSpacing->False, ShowStringCharacters->True, LineIndent->0, StyleMenuListing->None, FontWeight->"Plain", Background->RGBColor[1, 0.6, 0.6], GridBoxOptions->{RowSpacings->1.5, ColumnSpacings->1, ColumnWidths->{0.15, 0.35, 0.15, 0.35}, ColumnAlignments->{Left}}], Cell[StyleData["DefinitionBox4Col", "Printout"], CellMargins->{{2, 4}, {0, 8}}, FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["DefinitionBox4Col", "EnhancedPrintout"], CellMargins->{{2, 4}, {0, 8}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["DefinitionBox4Col", "EnhancedPrintoutNonGray"], CellMargins->{{2, 4}, {0, 8}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.999954]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["DefinitionBox5Col"], CellFrame->0.5, CellMargins->{{10, 4}, {0, 8}}, CellHorizontalScrolling->True, PageBreakWithin->False, AutoIndent->False, AutoSpacing->False, ShowStringCharacters->True, LineIndent->0, StyleMenuListing->None, FontWeight->"Plain", Background->RGBColor[1, 0.6, 0.6], GridBoxOptions->{RowSpacings->1.5, ColumnSpacings->1, ColumnWidths->0.2, ColumnAlignments->{Left}}], Cell[StyleData["DefinitionBox5Col", "Printout"], CellMargins->{{2, 4}, {0, 8}}, FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["DefinitionBox5Col", "EnhancedPrintout"], CellMargins->{{2, 4}, {0, 8}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["DefinitionBox5Col", "EnhancedPrintoutNonGray"], CellMargins->{{2, 4}, {0, 8}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.999954]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["DefinitionBox6Col"], CellFrame->0.5, CellMargins->{{10, 4}, {0, 8}}, CellHorizontalScrolling->True, PageBreakWithin->False, AutoIndent->False, AutoSpacing->False, ShowStringCharacters->True, LineIndent->0, StyleMenuListing->None, FontWeight->"Plain", Background->RGBColor[1, 0.6, 0.6], GridBoxOptions->{RowSpacings->1.5, ColumnSpacings->1, ColumnWidths->{0.13, 0.24, 0.13, 0.13, 0.24, 0.13}, ColumnAlignments->{Left}}], Cell[StyleData["DefinitionBox6Col", "Printout"], CellMargins->{{2, 4}, {0, 8}}, FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["DefinitionBox6Col", "EnhancedPrintout"], CellMargins->{{2, 4}, {0, 8}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["DefinitionBox6Col", "EnhancedPrintoutNonGray"], CellMargins->{{2, 4}, {0, 8}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.999954]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["TopBox"], CellFrame->{{0.5, 0.5}, {0, 0.5}}, CellMargins->{{11, 4}, {0, 8}}, CellHorizontalScrolling->True, PageBreakBelow->False, AutoIndent->False, AutoSpacing->False, ShowStringCharacters->True, LineIndent->0, StyleMenuListing->None, FontWeight->"Plain", Background->RGBColor[1, 0.6, 0.6], GridBoxOptions->{RowSpacings->1.5, ColumnSpacings->1, ColumnWidths->{0.31, 0.62}, ColumnAlignments->{Left}}], Cell[StyleData["TopBox", "Printout"], CellMargins->{{2, 0}, {-2, 8}}, FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["TopBox", "EnhancedPrintout"], CellMargins->{{2, 0}, {-4, 8}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["TopBox", "EnhancedPrintoutNonGray"], CellMargins->{{2, 0}, {-4, 8}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.999954]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["MiddleBox"], CellFrame->{{0.5, 0.5}, {0, 0}}, CellMargins->{{11, 4}, {0, -7}}, CellHorizontalScrolling->True, PageBreakAbove->False, PageBreakBelow->False, CellFrameMargins->{{8, 8}, {4, 4}}, AutoIndent->False, AutoSpacing->False, ShowStringCharacters->True, LineIndent->0, StyleMenuListing->None, FontWeight->"Plain", Background->RGBColor[1, 0.6, 0.6], GridBoxOptions->{RowSpacings->1.5, ColumnSpacings->1, ColumnWidths->{0.31, 0.62}, ColumnAlignments->{Left}}], Cell[StyleData["MiddleBox", "Printout"], CellMargins->{{2, 0}, {-1, 0}}, CellFrameMargins->{{8, 8}, {4, 1}}, FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["MiddleBox", "EnhancedPrintout"], CellMargins->{{2, 0}, {-1, 1}}, CellFrameMargins->{{8, 8}, {4, 1}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["MiddleBox", "EnhancedPrintoutNonGray"], CellMargins->{{2, 0}, {-1, 1}}, CellFrameMargins->{{8, 8}, {4, 1}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.999954]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["MiddleSpacedBox"], CellFrame->{{0.5, 0.5}, {0, 0}}, CellMargins->{{11, 4}, {-3, -8}}, CellHorizontalScrolling->True, PageBreakAbove->False, PageBreakBelow->False, AutoIndent->False, AutoSpacing->False, ShowStringCharacters->True, LineIndent->0, StyleMenuListing->None, FontWeight->"Plain", Background->RGBColor[1, 0.6, 0.6], GridBoxOptions->{RowSpacings->1.5, ColumnSpacings->1, ColumnWidths->{0.31, 0.62}, ColumnAlignments->{Left}, RowMinHeight->1.2}], Cell[StyleData["MiddleSpacedBox", "Printout"], CellMargins->{{2, 0}, {-5, 0}}, CellFrameMargins->{{8, 8}, {6, 2}}, FontSize->10, Background->GrayLevel[0.900008], GridBoxOptions->{RowMinHeight->1.8}], Cell[StyleData["MiddleSpacedBox", "EnhancedPrintout"], CellMargins->{{2, 0}, {-7, 0}}, CellFrameMargins->{{8, 8}, {6, 2}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.900008], GridBoxOptions->{RowMinHeight->1.8}], Cell[StyleData["MiddleSpacedBox", "EnhancedPrintoutNonGray"], CellMargins->{{2, 0}, {-7, 0}}, CellFrameMargins->{{8, 8}, {6, 2}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.999954], GridBoxOptions->{RowMinHeight->1.8}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["MiddleSpanBox"], CellFrame->{{0.5, 0.5}, {0, 0}}, CellMargins->{{11, 4}, {-3, -8}}, CellHorizontalScrolling->True, PageBreakAbove->False, PageBreakBelow->False, AutoIndent->False, AutoSpacing->False, ShowStringCharacters->True, LineIndent->0, StyleMenuListing->None, FontWeight->"Plain", Background->RGBColor[1, 0.6, 0.6], GridBoxOptions->{RowSpacings->1.5, ColumnSpacings->1, ColumnWidths->{0.9, 0.03}, ColumnAlignments->{Left}, RowMinHeight->1.2}], Cell[StyleData["MiddleSpanBox", "Printout"], CellMargins->{{2, 0}, {-5, 0}}, CellFrameMargins->{{8, 8}, {6, 2}}, FontSize->10, Background->GrayLevel[0.900008], GridBoxOptions->{RowMinHeight->1.8}], Cell[StyleData["MiddleSpanBox", "EnhancedPrintout"], CellMargins->{{2, 0}, {-7, 0}}, CellFrameMargins->{{8, 8}, {6, 2}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.900008], GridBoxOptions->{RowMinHeight->1.8}], Cell[StyleData["MiddleSpanBox", "EnhancedPrintoutNonGray"], CellMargins->{{2, 0}, {-7, 0}}, CellFrameMargins->{{8, 8}, {6, 2}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.999954], GridBoxOptions->{RowMinHeight->1.8}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["BottomBox"], CellFrame->{{0.5, 0.5}, {0.5, 0}}, CellMargins->{{11, 4}, {0, -7}}, CellHorizontalScrolling->True, PageBreakAbove->False, PageBreakBelow->False, AutoIndent->False, AutoSpacing->False, ShowStringCharacters->True, LineIndent->0, StyleMenuListing->None, FontWeight->"Plain", Background->RGBColor[1, 0.6, 0.6], GridBoxOptions->{RowSpacings->1.5, ColumnSpacings->1, ColumnWidths->{0.31, 0.62}, ColumnAlignments->{Left}, RowMinHeight->1.2}], Cell[StyleData["BottomBox", "Printout"], CellMargins->{{2, 0}, {-1, 1}}, CellFrameMargins->{{8, 8}, {4, 1}}, FontSize->10, Background->GrayLevel[0.900008], GridBoxOptions->{RowMinHeight->2.2}], Cell[StyleData["BottomBox", "EnhancedPrintout"], CellMargins->{{2, 0}, {-1, 1}}, CellFrameMargins->{{8, 8}, {4, 1}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.900008], GridBoxOptions->{RowMinHeight->2.2}], Cell[StyleData["BottomBox", "EnhancedPrintoutNonGray"], CellMargins->{{2, 0}, {-1, 1}}, CellFrameMargins->{{8, 8}, {4, 1}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.999954], GridBoxOptions->{RowMinHeight->2.2}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["TopSpanBox"], CellFrame->{{0.5, 0.5}, {0, 0.5}}, CellMargins->{{11, 4}, {-2, 8}}, CellHorizontalScrolling->True, PageBreakBelow->False, AutoIndent->False, AutoSpacing->False, ShowStringCharacters->True, LineIndent->0, StyleMenuListing->None, FontWeight->"Plain", Background->RGBColor[1, 0.6, 0.6], GridBoxOptions->{RowSpacings->1.5, ColumnSpacings->1, ColumnWidths->{0.9, 0.03}, ColumnAlignments->{Left}}], Cell[StyleData["TopSpanBox", "Printout"], CellMargins->{{2, 0}, {-2, 8}}, FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["TopSpanBox", "EnhancedPrintout"], CellMargins->{{2, 0}, {-4, 8}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.900008]], Cell[StyleData["TopSpanBox", "EnhancedPrintoutNonGray"], CellMargins->{{2, 0}, {-4, 8}}, FontFamily->"Palatino", FontSize->10, Background->GrayLevel[0.999954]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Picture"], CellMargins->{{12, Inherited}, {0, 8}}, CellHorizontalScrolling->True], Cell[StyleData["Picture", "Printout"], CellMargins->{{2, Inherited}, {0, 8}}], Cell[StyleData["Picture", "EnhancedPrintout"], CellMargins->{{2, Inherited}, {0, 8}}], Cell[StyleData["Picture", "EnhancedPrintoutNonGray"], CellMargins->{{2, Inherited}, {0, 8}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Caption"], CellMargins->{{12, 4}, {0, 2}}, PageBreakAbove->False, FontFamily->"Helvetica", FontSize->9], Cell[StyleData["Caption", "Printout"], CellMargins->{{2, 4}, {2, 4}}, FontSize->7], Cell[StyleData["Caption", "EnhancedPrintout"], CellMargins->{{2, 4}, {2, 4}}, FontFamily->"Futura", FontSize->7], Cell[StyleData["Caption", "EnhancedPrintoutNonGray"], CellMargins->{{2, 4}, {2, 4}}, FontFamily->"Futura", FontSize->7] }, Closed]] }, Closed]] }, Open ]] }] ] (******************************************************************* Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. *******************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[1705, 50, 10963, 139, 31, 10850, 135, "GraphicsData", "Bitmap", \ "GraphicHeader", Evaluatable->False], Cell[CellGroupData[{ Cell[12693, 193, 132, 5, 72, "Title"], Cell[12828, 200, 20, 0, 42, "Subtitle"], Cell[12851, 202, 77, 0, 74, "Author"], Cell[12931, 204, 491, 9, 100, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[13459, 218, 31, 0, 64, "Section"], Cell[13493, 220, 244, 6, 56, "Text"], Cell[13740, 228, 510, 12, 100, "Text"], Cell[14253, 242, 125, 3, 34, "Text"], Cell[CellGroupData[{ Cell[14403, 249, 38, 0, 46, "Subsection"], Cell[14444, 251, 184, 5, 56, "Text"], Cell[14631, 258, 193, 5, 34, "Text"], Cell[14827, 265, 151, 4, 34, "Text"], Cell[14981, 271, 145, 4, 34, "Text"], Cell[15129, 277, 322, 7, 78, "Text"], Cell[15454, 286, 88, 1, 34, "Text"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[15591, 293, 33, 0, 40, "Section"], Cell[15627, 295, 56, 1, 38, "Input"], Cell[15686, 298, 60, 1, 38, "Input"], Cell[15749, 301, 170, 5, 56, "Input"], Cell[CellGroupData[{ Cell[15944, 310, 62, 1, 38, "Input"], Cell[16009, 313, 1843, 40, 351, "Output"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[17901, 359, 35, 0, 40, "Section"], Cell[17939, 361, 345, 6, 100, "Text"], Cell[18287, 369, 205, 4, 56, "Text"], Cell[18495, 375, 305, 7, 122, "Text"], Cell[CellGroupData[{ Cell[18825, 386, 66, 1, 38, "Input"], Cell[18894, 389, 215, 4, 29, "Output"] }, Closed]], Cell[19124, 396, 62, 0, 34, "Text"], Cell[CellGroupData[{ Cell[19211, 400, 59, 1, 38, "Input"], Cell[19273, 403, 2058, 42, 673, "Output"] }, Closed]], Cell[21346, 448, 482, 12, 100, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[21865, 465, 23, 0, 40, "Section"], Cell[21891, 467, 408, 9, 100, "Text"], Cell[22302, 478, 282, 6, 92, "Input"], Cell[CellGroupData[{ Cell[22609, 488, 73, 1, 38, "Input"], Cell[22685, 491, 1620, 25, 811, "Output"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[24354, 522, 24, 0, 40, "Section"], Cell[24381, 524, 312, 7, 78, "Text"], Cell[24696, 533, 330, 9, 78, "Text"], Cell[25029, 544, 107, 3, 34, "Text"], Cell[CellGroupData[{ Cell[25161, 551, 78, 1, 38, "Input"], Cell[25242, 554, 1621, 40, 351, "Output"] }, Closed]], Cell[26878, 597, 786, 25, 122, "Text"], Cell[CellGroupData[{ Cell[27689, 626, 118, 4, 38, "Input"], Cell[27810, 632, 1621, 40, 351, "Output"] }, Closed]], Cell[29446, 675, 526, 13, 100, "Text"], Cell[CellGroupData[{ Cell[29997, 692, 126, 4, 38, "Input"], Cell[30126, 698, 235, 4, 52, "Output"] }, Closed]], Cell[30376, 705, 189, 8, 34, "Text"], Cell[CellGroupData[{ Cell[30590, 717, 227, 6, 74, "Input"], Cell[30820, 725, 235, 4, 52, "Output"] }, Closed]], Cell[31070, 732, 433, 11, 100, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[31540, 748, 22, 0, 40, "Section"], Cell[31565, 750, 741, 13, 166, "Text"], Cell[32309, 765, 466, 10, 100, "Text"], Cell[CellGroupData[{ Cell[32800, 779, 62, 1, 38, "Input"], Cell[32865, 782, 5191, 104, 1225, "Output"] }, Closed]], Cell[38071, 889, 493, 12, 100, "Text"], Cell[38567, 903, 236, 4, 78, "Text"], Cell[38806, 909, 532, 10, 122, "Text"], Cell[39341, 921, 308, 10, 164, "Input"], Cell[39652, 933, 94, 4, 34, "Text"], Cell[CellGroupData[{ Cell[39771, 941, 201, 7, 110, "Input"], Cell[39975, 950, 331, 6, 75, "Output"] }, Closed]], Cell[40321, 959, 459, 9, 100, "Text"], Cell[CellGroupData[{ Cell[40805, 972, 134, 4, 38, "Input"], Cell[40942, 978, 331, 6, 75, "Output"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[41322, 990, 55, 0, 40, "Section"], Cell[41380, 992, 318, 7, 78, "Text"], Cell[CellGroupData[{ Cell[41723, 1003, 118, 4, 38, "Input"], Cell[41844, 1009, 6884, 142, 1708, "Output"] }, Closed]], Cell[48743, 1154, 376, 8, 78, "Text"], Cell[CellGroupData[{ Cell[49144, 1166, 238, 8, 128, "Input"], Cell[49385, 1176, 1125, 21, 466, "Output"] }, Closed]], Cell[50525, 1200, 69, 0, 34, "Text"], Cell[CellGroupData[{ Cell[50619, 1204, 200, 6, 74, "Input"], Cell[50822, 1212, 1125, 21, 466, "Output"] }, Closed]], Cell[51962, 1236, 272, 9, 56, "Text"], Cell[CellGroupData[{ Cell[52259, 1249, 319, 10, 164, "Input"], Cell[52581, 1261, 1125, 21, 466, "Output"] }, Closed]], Cell[CellGroupData[{ Cell[53743, 1287, 82, 1, 38, "Input"], Cell[53828, 1290, 63, 2, 29, "Output"] }, Closed]], Cell[53906, 1295, 38, 0, 34, "Text"], Cell[53947, 1297, 198, 5, 56, "Input"], Cell[54148, 1304, 1992, 40, 278, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[56177, 1349, 69, 0, 40, "Section"], Cell[56249, 1351, 158, 4, 56, "Text"], Cell[CellGroupData[{ Cell[56432, 1359, 153, 5, 38, "Input"], Cell[56588, 1366, 2694, 59, 512, "Output"] }, Closed]], Cell[59297, 1428, 267, 5, 78, "Text"], Cell[CellGroupData[{ Cell[59589, 1437, 484, 16, 200, "Input"], Cell[60076, 1455, 189, 3, 29, "Output"] }, Closed]], Cell[CellGroupData[{ Cell[60302, 1463, 87, 4, 56, "Input"], Cell[60392, 1469, 13464, 438, 150, 6172, 343, "GraphicsData", "PostScript", \ "Graphics"], Cell[73859, 1909, 155, 4, 29, "Output"] }, Closed]], Cell[74029, 1916, 93, 3, 34, "Text"], Cell[CellGroupData[{ Cell[74147, 1923, 677, 21, 236, "Input"], Cell[74827, 1946, 189, 3, 29, "Output"] }, Closed]], Cell[75031, 1952, 1063, 33, 25, "Program", CellOpen->False] }, Closed]] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)