2004年05月23日(日)更新 |
■XMLスプレッドシート(XMLSS)形式
たけち: 前回はExcelとXML Schemaファイルを使って、CSVをXMLデータへ変換したけれど、その際に「XMLデータ」とは別にXMLスプレッドシートという形式で【kajin2_XMLSS.xml】というファイルを保存したよね。 さらら: そうね。「XMLデータ」の方はよくわかったけれど、この「XMLスプレッドシート」ってよくわからなかったわ。 たけち: うん。今回は、「XMLスプレッドシート」について説明するね。まず前回も気づいたことだけれど、【kajin2.xml】と【kajin2_XMLSS.xml】では、アイコンのデザインが違ったよね。 さらら: えぇ。【kajin2.xml】は普段見慣れたXMLファイルのアイコンだけれど、「XMLスプレッドシート」である【kajin2_XMLSS.xml】はそうではないわ。 |
|
■【kajin2.xml】を表示
たけち: ここでは【kajin2.xml】と【kajin2_XMLSS.xml】の違いを見てみようね。まず、通常の「XMLデータ」である【kajin2.xml】のアイコンをダブルクリックしたらどうなると思う? さらら: え〜と、スタイルシート処理命令はなかったから、単にInternet Explorer上でこの内容が表示されるだけだと思うわ。 たけち: そうだね。このアイコンをダブルクリックするとそうなるね。 |
【kajin2.xml】の表示
■【kajin2_XMLSS.xml】を表示
たけち: じゃあ、次にXMLスプレッドシートの【kajin2_XMLSS.xml】アイコンをダブルクリックしたらどうなるか見てみよう。 さらら: は〜い。。。。。。あ、普通にExcelが立ち上がって、前回見たのと同じスプレッドシートの画面になったわ。 |
【kajin2_XMLSS.xml】の表示
たけち: そう。今までWindows上でXMLファイルをダブルクリックしたらInternet Explorerが立ち上がってXMLファイルを階層構造がわかるような表示がされたよね。 さらら: えぇ。。。 たけち: ところがこのXMLスプレッドシートの【kajin2_XMLSS.xml】、ダブルクリックするとExcelが立ち上がるんだよね。 さらら: えぇ。。。ということは、Excel本来のxsl・・・・じゃなかった、xls形式のファイルと変わらないんじゃないの? |
|
■【kajin2_XMLSS.xml】の内容
たけち: そうだよね、とても似ているよね。でも、xls形式のファイルとの違いは、これがやっぱりXMLファイルだということなんだ。このことを確認してみるために、このファイルをテキストエディタで開いてみようね。 さらら: あっ、テキストエディタで開けるの? たけち: XMLファイルだからね。 さらら: そっか。(^ ^; たけち: ちょっと長いんだけどね。。。 |
|
XMLスプレッドシートの例 【kajin2_XMLSS.xml】 |
---|
1: <?xml version="1.0"?> 2: <?mso-application progid="Excel.Sheet"?> 3: <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 4: xmlns:o="urn:schemas-microsoft-com:office:office" 5: xmlns:x="urn:schemas-microsoft-com:office:excel" 6: xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 7: xmlns:html="http://www.w3.org/TR/REC-html40" 8: xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml"> 9: <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> 10: <LastAuthor>TAKECHI</LastAuthor> 11: <Created>2004-04-22T08:44:17Z</Created> 12: <Version>11.5606</Version> 13: </DocumentProperties> 14: <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> 15: <WindowHeight>6750</WindowHeight> 16: <WindowWidth>12780</WindowWidth> 17: <WindowTopX>240</WindowTopX> 18: <WindowTopY>75</WindowTopY> 19: <ProtectStructure>False</ProtectStructure> 20: <ProtectWindows>False</ProtectWindows> 21: <FutureVer>11</FutureVer> 22: </ExcelWorkbook> 23: <Styles> 24: <Style ss:ID="Default" ss:Name="Normal"> 25: <Alignment ss:Vertical="Center"/> 26: <Borders/> 27: <Font ss:FontName="MS Pゴシック" x:CharSet="128" x:Family="Modern" ss:Size="11"/> 28: <Interior/> 29: <NumberFormat/> 30: <Protection/> 31: </Style> 32: <Style ss:ID="s21"> 33: <Font ss:FontName="MS Pゴシック" x:CharSet="128" x:Family="Modern" ss:Size="11" 34: ss:Bold="1"/> 35: </Style> 36: <Style ss:ID="s22"> 37: <NumberFormat/> 38: </Style> 39: <Style ss:ID="s23"> 40: <NumberFormat ss:Format="@"/> 41: </Style> 42: </Styles> 43: <Worksheet ss:Name="kajin"> 44: <Names> 45: <NamedRange ss:Name="_FilterDatabase" ss:RefersTo="=kajin!R1C1:R4C4" 46: ss:Hidden="1"/> 47: </Names> 48: <Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="4" x:FullColumns="1" 49: x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="13.5"> 50: <Column ss:Width="30.75"/> 51: <Column ss:Width="66"/> 52: <Column ss:Width="40.5"/> 53: <Column ss:Width="134.25"/> 54: <Row> 55: <Cell ss:StyleID="s21"><Data ss:Type="String">id</Data><NamedCell 56: ss:Name="_FilterDatabase"/></Cell> 57: <Cell ss:StyleID="s21"><Data ss:Type="String">name</Data><NamedCell 58: ss:Name="_FilterDatabase"/></Cell> 59: <Cell ss:StyleID="s21"><Data ss:Type="String">age</Data><NamedCell 60: ss:Name="_FilterDatabase"/></Cell> 61: <Cell ss:StyleID="s21"><Data ss:Type="String">address</Data><NamedCell 62: ss:Name="_FilterDatabase"/></Cell> 63: </Row> 64: <Row> 65: <Cell ss:StyleID="s22"><Data ss:Type="Number">1</Data><NamedCell 66: ss:Name="_FilterDatabase"/></Cell> 67: <Cell ss:StyleID="s23"><Data ss:Type="String">大伴家持</Data><NamedCell 68: ss:Name="_FilterDatabase"/></Cell> 69: <Cell ss:StyleID="s22"><Data ss:Type="Number">36</Data><NamedCell 70: ss:Name="_FilterDatabase"/></Cell> 71: <Cell ss:StyleID="s23"><Data ss:Type="String">yakamochi@example.com</Data><NamedCell 72: ss:Name="_FilterDatabase"/></Cell> 73: </Row> 74: <Row> 75: <Cell ss:StyleID="s22"><Data ss:Type="Number">2</Data><NamedCell 76: ss:Name="_FilterDatabase"/></Cell> 77: <Cell ss:StyleID="s23"><Data ss:Type="String">額田王</Data><NamedCell 78: ss:Name="_FilterDatabase"/></Cell> 79: <Cell ss:StyleID="s22"><Data ss:Type="Number">28</Data><NamedCell 80: ss:Name="_FilterDatabase"/></Cell> 81: <Cell ss:StyleID="s23"><Data ss:Type="String">nukata@example.com</Data><NamedCell 82: ss:Name="_FilterDatabase"/></Cell> 83: </Row> 84: <Row> 85: <Cell ss:StyleID="s22"><Data ss:Type="Number">3</Data><NamedCell 86: ss:Name="_FilterDatabase"/></Cell> 87: <Cell ss:StyleID="s23"><Data ss:Type="String">柿本人麻呂</Data><NamedCell 88: ss:Name="_FilterDatabase"/></Cell> 89: <Cell ss:StyleID="s22"><Data ss:Type="Number">45</Data><NamedCell 90: ss:Name="_FilterDatabase"/></Cell> 91: <Cell ss:StyleID="s23"><Data ss:Type="String">hitomaro@example.com</Data><NamedCell 92: ss:Name="_FilterDatabase"/></Cell> 93: </Row> 94: </Table> 95: <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> 96: <PageSetup> 97: <Header x:Margin="0.51200000000000001"/> 98: <Footer x:Margin="0.51200000000000001"/> 99: <PageMargins x:Bottom="0.98399999999999999" x:Left="0.78700000000000003" 100: x:Right="0.78700000000000003" x:Top="0.98399999999999999"/> 101: </PageSetup> 102: <Selected/> 103: <Panes> 104: <Pane> 105: <Number>3</Number> 106: <RangeSelection>R1C1:R5C4</RangeSelection> 107: </Pane> 108: </Panes> 109: <ProtectObjects>False</ProtectObjects> 110: <ProtectScenarios>False</ProtectScenarios> 111: </WorksheetOptions> 112: </Worksheet> 113: <x2:MapInfo x2:HideInactiveListBorder="false"> 114: <x2:Schema x2:ID="Schema1" x2:Namespace=""> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 115: <xsd:element name="meibo" type="MeiboType"> 116: <xsd:key name="person-id"> 117: <xsd:selector xpath="person"/> 118: <xsd:field xpath="@id"/> 119: </xsd:key> 120: </xsd:element> 121: <xsd:complexType name="MeiboType"> 122: <xsd:sequence> 123: <xsd:element ref="person" maxOccurs="unbounded"/> 124: </xsd:sequence> 125: </xsd:complexType> 126: <xsd:element name="person" type="PersonType"/> 127: <xsd:complexType name="PersonType"> 128: <xsd:sequence> 129: <xsd:element name="name" type="xsd:string"/> 130: <xsd:element name="age" type="xsd:positiveInteger"/> 131: <xsd:element name="address" type="xsd:string"/> 132: </xsd:sequence> 133: <xsd:attribute name="id" type="xsd:positiveInteger" use="required"/> 134: </xsd:complexType> 135: </xsd:schema> </x2:Schema> 136: <x2:Map x2:ID="meibo_対応付け" x2:SchemaID="Schema1" x2:RootElement="meibo"> 137: <x2:Entry x2:Type="table" x2:ID="1" x2:ShowTotals="false"> 138: <x2:Range>kajin!R2C1:R4C4</x2:Range> 139: <x2:HeaderRange>R1C1</x2:HeaderRange> 140: <x:FilterOn>True</x:FilterOn> 141: <x2:XPath>/meibo/person</x2:XPath> 142: <x2:Field x2:ID="id"> 143: <x2:Range>RC</x2:Range> 144: <x2:XPath>@id</x2:XPath> 145: <x2:XSDType>positiveInteger</x2:XSDType> 146: <ss:Cell> 147: </ss:Cell> 148: <x2:Aggregate>None</x2:Aggregate> 149: </x2:Field> 150: <x2:Field x2:ID="name"> 151: <x2:Range>RC[1]</x2:Range> 152: <x2:XPath>name</x2:XPath> 153: <x2:XSDType>string</x2:XSDType> 154: <ss:Cell> 155: </ss:Cell> 156: <x2:Aggregate>None</x2:Aggregate> 157: </x2:Field> 158: <x2:Field x2:ID="age"> 159: <x2:Range>RC[2]</x2:Range> 160: <x2:XPath>age</x2:XPath> 161: <x2:XSDType>positiveInteger</x2:XSDType> 162: <ss:Cell> 163: </ss:Cell> 164: <x2:Aggregate>None</x2:Aggregate> 165: </x2:Field> 166: <x2:Field x2:ID="address"> 167: <x2:Range>RC[3]</x2:Range> 168: <x2:XPath>address</x2:XPath> 169: <x2:XSDType>string</x2:XSDType> 170: <ss:Cell> 171: </ss:Cell> 172: <x2:Aggregate>None</x2:Aggregate> 173: </x2:Field> 174: </x2:Entry> 175: </x2:Map> 176: </x2:MapInfo> 177: </Workbook> |
さらら: なっ、長い・・・・・(^ ^; 何がどうなっているのか分かんないわ!! たけち: そうなんだよね。ぼくも全部理解しているわけじゃないんだけれど、実際に必要なのはよく見るとわかる部分だけだから、そこだけ見てゆこうね。 さらら: そっ、そう? (^ ^* たけち: 例えば、27行目あたりに「MS Pゴシック」と書いてあるということは、使う文字のフォントの種類だってわかるよね。 さらら: そういえば、そうね。 たけち: それから、114行目からは前回使ったXML Schemaがそのまま入っているよね。 さらら: あら、本当だわ。 |
|
■XMLスプレッドシート(XMLSS)形式が便利な場合
たけち: つまりこのXMLスプレッドシート(XMLSS)形式のファイルというのは、Excel本来のxls形式に準じるような多くの情報をXMLとして保存し、そしてまたxls形式と同様にアイコンをダブルクリックすればExcelが立ち上がるようなファイル形式なんだ。 さらら: なるほど、そうなのね! でも、こんな複雑なXMLファイルって使い道があるのかしら? 要はxls形式に準じるような情報がXMLの形になっただけでしょ。XMLとして使うなら前回のXMLデータファイルの方が便利そうだし。 たけち: 必ずしもそうとは言えないよ。例えば今までのファイルにデータを追加することを考えてみようか。XMLデータとして保存されていた場合は、いったんExcelを立ち上げて、XML Schema情報をもとに形を規定し、XMLデータを読み込み、それから追加データを入力し、最後にXMLデータとして保存しないといけないよね。 さらら: そうね。XMLファイルととxlsファイルでは形式が違うものね。 たけち: ところがXMLスプレッドシート(XMLSS)形式は、この形式のファイルをダブルクリックしてExcelを立ち上げ、追加データを入力してから、上書き保存してしまえばそれで終了なんだよね。つまりxls形式と同様の易しさで使えるんだよ。 |
さらら: それって、たいした手間の違いじゃないんじゃないの? たけち: う〜ん。それは、さららがパソコンに慣れてきたせいだよね。 さらら: えへっ (^ ^; たけち: ところが世の中はそう思う人ばかりじゃないんだ。例えば、さららのお付の女官にデータを入力してもらおうと思ったら、XMLデータを扱うような手間をとってもらえるかな? さらら: う〜ん、ちょっと大変だわね。パソコンに詳しくなさそうだし・・・・・ たけち: そうだよね。世の中はパソコンに詳しい人ばかりとは限らないし、みんな忙しいし。。。だから、立ち上げにデータのファイルをダブルクリックすればいいだけなのか、そうでないのかは大きな違いだね。 さらら: なるほど。でも、どんな使い方があるのかしら? |
|
たけち: そうだね、例えば組織が出しているWebページを考えてみようか。 さらら: えぇ。 たけち: 例えばさららが、この国の法律や国からのお知らせ情報を扱ったWebページを作ったとするよね。最初はさららがデザインしてもいいかもしれないね。ところがそういう情報は、どんどん増えたり、廃止されたり、変更されたりするよね。そういう情報が追加・変更・廃止されるたびに、さららがエディタでHTMLファイルを書き換えていたら大変だよね。 さらら: それはそうだわ。不比等(ふひと)ならやれるだろうけど、彼って忙しいから・・・ たけち: えっ? さらら: あっ、独り言(^ ^; |
たけち: このようなWebページ内のデータを追加・変更・削除ができれば良くって、他に用途を想定していない場合ってあるよね。そんな時には、Excelでデータを追加・変更・削除すれば、Webページが変更できるようにするといいよね。そうすると、さららが自分でやらなくってもいいよね。 さらら: えぇ。それは分かるけど。 たけち: さっきのExcelのXMLスプレッドシート(XMLSS)形式のファイルと、XSLTを組み合わせればいいんだよ。 さらら: あ、そうか! ExcelとXSLTを組み合わせてWebページを作るのね。 たけち: そういうことだね。じゃあ、次回は、実際に【kajin2_XMLSS.xml】を使ってXSLTでHTMLに変換してみよう。。 さらら: あっ、はい。 (^ ^* →次回はXMLスプレッドシート(XMLSS)形式 (2)です。 (^ ^; |
|
■このコーナーは、TAKABEさま(XSLT登竜門)の全面的なご協力をいただいて作成しています。 |