|
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登竜門)の全面的なご協力をいただいて作成しています。 |