DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> 在 Excel 2003 中創建 XML 映射
在 Excel 2003 中創建 XML 映射
編輯:XML詳解     
簡介 Microsoft Office Excel 2003 通過允許您將自己的 XML 架構定義 (XSD) 添加到工作薄,提高了對使用本機 XML 的支持。這樣可以創

建一個 XML 映射,用於在導入或導出數據時使數據變得更有意義。因此,您可以導入符合自定義 XML 詞匯或架構的數據,然後使用相同的

XML 架構將該數據寫回去。

該功能面向 Office 解決方案開發人員,但專家用戶也能夠很好地使用它。該功能使您能夠: •

在 Excel 電子表格和 XML 結構之間創建一個映射 •

使用該映射將後續 XML 數據導入到相同的結構 •

使用該映射將 XML 數據從該電子表格(符合該 XML 架構)中導出 •

對後續導入和導出操作保持並重新使用該映射

通過將一個 XSD 文件添加到 Excel 工作薄啟動該過程。一旦您添加了 XSD 文件,Excel 會在 XML Source 任務窗格(請參見圖 1)

中創建一個XML 映射,您可以將該映射用於特定范圍或單個單元格。Excel 也可以使用該映射來管理那些映射范圍和 XML 架構中元素

之間的關系。一個工作薄可以包含許多 XML 映射,其中每個映射都是一個獨立的實體。同樣地,對於同一個架構也可以有多個映射。

當您導入或導出 XML 數據時,Excel 使用該映射將一個映射范圍的內容與該架構中的元素相關聯。

一個映射必須包含單個根元素。如果您添加一個定義了多於一個根元素的架構,您必須選擇單一根元素來使用該映射。

XML Source 任務窗格是一個可視工具,能夠使 Office 解決方案開發人員快速設置知道如何在用戶特定的架構中使用和生成 XML

數據的電子表格。

 在 Excel 2003 中創建 XML 映射圖片1

圖 1. XML Source 任務窗格>

XML Source 任務窗格由一個樹視圖組成,能夠使您挑選您所需的 XML 元素,並將其拖入邏輯分組中的單元格中或單獨的表中。

讓我們更詳細地看看如何從 XML Source 任務窗格中使用 Excel 中的 XML 數據、架構和映射。您可以使用這些過程來檢查後續方

案中的圖形。將 XML 映射添加到工作薄

使用 XML 數據的第一步是將一個架構或映射添加到工作薄。

1.在 VIEw 菜單上,單擊 Task Pane 顯示 XML Source 任務窗格。

-R- 在 Data 菜單上,指向 XML,然後單擊 XML Source

2.單擊 XML Maps,然後單擊 Add

3.進入架構文件,單擊 Open,然後單擊OK

這樣附加了該架構,並將一個 XML 映射添加到工作薄。您現在可以將架構元素拖到電子表格上以映射它們。請注意,工作薄上沒有添

加數據。您需要在通過映射所需的元素標記工作表之後,作為一個單獨步驟將數據導入(請參閱以下部分)。

您可以向工作薄中添加多個架構。但是,單個電子表格范圍只能容納一個 XML 元素。兩個或更多個 XML 元素之間不能有重疊。

圖 1 顯示了一個 XML Source 任務窗格,該窗格顯示了一個帶有 Root 的根節點的 XML 映射。Excel 在一個分層視圖中顯示了子元素。

1.單擊 Options 以自定義映射,並切換映射邊界。您可以選擇在任務窗格中預覽示例數據,在任務窗格中顯示或隱藏幫助文本,並在映射時自動合並元素。您也可以在將重復元素映射到您的工作表時,指定將數據作為列標題使用。

2.單擊 XML Maps 顯示 XML Maps 對話框,該對話框可用於添加、刪除或重新命名 XML 映射。

3.單擊 Verify Map for EXPort 驗證 Excel 是否可以使用當前選擇的映射導出數據。 使用 XML Source 任務窗格進行映射

XML Source 任務窗格以樹視圖顯示工作薄中的 XML 架構。您可以通過將元素拖到工作表上來映射元素,或者您也可以右鍵單擊每個元素

並選擇 Map element。您可以通過單擊一個元素,按住 CTRL 鍵,並單擊其他元素來選擇非相鄰元素。一旦您選擇了元素,就可以將它

們拖到工作表中您希望它們出現的位置。如果該元素是一個重復元素,Excel 會在您添加該元素的單元格中創建一個 XML 列表。將數據導入映射的范圍

現在讓我們將 XML 數據導入映射的網格。

如果您在導入或導出的過程中使用一個 XSD 文件,默認情況下驗證未打開。要打開驗證或選擇與 XML 映射器有關的其他選項,單擊

Data 菜單,單擊 XML,然後單擊 XML Map PropertIEs

1.在您想導入 XML 數據的映射范圍內選擇一個單元格。

2.在 Data 菜單上,指向 XML,然後單擊 Import

3.在 Look in 列表中,單擊包含您想導入的 XML 數據文件的驅動器、文件夾或 Internet 位置。

4.在該文件夾列表中,定位和打開包含該文件的文件夾。

5.單擊該文件,然後單擊 Import。 XML 映射方案

既然您看到了如何從架構創建一個映射,以及使用該映射將數據導入工作表,下面的部分將闡釋如何將多種架構結構映射到網格中。

該架構的結構在您導入數據後,確定數據的映射和出現。下面的部分提供了幾幅圖,闡釋了導入 XML 數據和 XSD 架構列表的結果。

對於每個方案,建議您執行以下操作:

1.使用文本編輯器(例如,記事本)將 XML 和 XSD 列表復制並粘貼到單獨的文件中。

2.將 XSD 數據導入 XML Source 任務窗格以創建一個映射。

3.將該映射指定的元素(一個或多個)拖放到工作表單元格上。

4.從 XML 文件導入數據。

通過將這些架構與您自己的架構進行對比,您可以看到數據上某些架構的影響,或者在所需的地方進行調整,以便精細調整數據的

圖形來滿足您的需要。創建表格報表

用戶界面

將 Row 或Root 元素放到單元格 B2(使用 XML Source 任務窗格)會產生下表:

 在 Excel 2003 中創建 XML 映射圖片2

圖 2. 表格映射

XML 實例

<?xml version="1.0"?><Root xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance> <Row> <Column1>A</Column1> <Column2>B</Column2> <Column3>C</Column3> </Row> <Row> <Column1>X</Column1> <Column2>Y</Column2> <Column3>Z</Column3> </Row> </Root>

XSD

<?xml version="1.0"?> <schema xmlns="http://www.w3.org/2001/XMLSchema"> <element name="Root"> <complexType> <sequence> <element name="Row" maxOccurs="unbounded"> <complexType> <sequence> <element name="Column1" type="string" /> <element name="Column2" type="string" /> <element name="Column3" type="string" /> </sequence> </complexType> </element> </sequence> </complexType> </element> </schema> 使用嵌套的元素

用戶界面

將 Person 或Root 元素放到單元格 B3 上會產生下表:

 在 Excel 2003 中創建 XML 映射圖片3

圖 3. 嵌套的元素映射

XML 實例

<?xml version="1.0"?> <Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Person> <FirstName>Janet</FirstName> <Middle>Q</Middle> <LastName>Leverling</LastName> <Address> <Address1>123 Elm</Address1> <Address2></Address2> <City>Pleasantville</City> <State>MA</State> <Zip>12345</Zip> </Address> </Person> <Person> <FirstName>Robert</FirstName> <Middle>Q</Middle> <LastName>Fuller</LastName> <Address> <Address1>123 Main</Address1> <Address2></Address2> <City>Mayberry</City> <State>MA</State> <Zip>12345</Zip> </Address> </Person> </Root>

XSD

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="Root"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="0" maxOccurs="unbounded" name="Customer"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="Id" /> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="Name" /> <xsd:element minOccurs="0" maxOccurs="1" name="Address"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="AddressLine" /> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="City" /> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="State" /> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="zip" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element minOccurs="0" maxOccurs="unbounded" name="Order"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="Id" /> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="Date" /> <xsd:element minOccurs="0" maxOccurs="unbounded" name="ProdUCt"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="Name" /> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="Quantity" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> 創建開支報告樣式表

用戶界面

將 Meta元素放到單元格 B2 中,並將 ExpenseItem 元素放到單元格 B6 中會產生下表:

 在 Excel 2003 中創建 XML 映射圖片4

圖 4. 開支報告映射

將 Root 元素放到單元格 B2 中將產生以下變化:

 在 Excel 2003 中創建 XML 映射圖片5

圖 5. 開支報告映射上的變化

XML 實例

<?xml version="1.0"?> <Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Meta> <Name>Nancy Davolio</Name> <Date>2005-01-01</Date> <SAPCode>0001</SAPCode> </Meta> <ExpenseItem> <Date>2005-01-01</Date> <Description>Airfare</Description> <Amount>500</Amount> </ExpenseItem> <ExpenseItem> <Date>2005-01-01</Date> <Description>Hotel</Description> <Amount>200</Amount> </ExpenseItem> </Root>

XSD

<?xml version="1.0"?> <schema xmlns="http://www.w3.org/2001/XMLSchema"> <element name="Root"> <complexType> <sequence> <element name="Meta"> <complexType> <sequence> <element name="Name" type="string"/> <element name="Date" type="date"/> <element name="SAPCode"> <simpleType> <restriction base="positiveInteger"> <pattern value="[0-9]{4}" /> </restriction> </simpleType> </element> </sequence> </complexType> </element> <element name="ExpenseItem" maxOccurs="unbounded"> <complexType> <sequence> <element name="Date" type="date"/> <element name="Description" type="string"/> <element name="Amount"> <simpleType> <restriction base="decimal"> <pattern value="[0-9]+(.[0-9]{2})?"/> </restriction> </simpleType> </element> </sequence> </complexType> </element> </sequence> </complexType> </element> </schema> 創建關系表用戶界面

如果您將 Customer 或Root 元素放到單元格 A3 中,該網格將如下所示:

 在 Excel 2003 中創建 XML 映射圖片6

圖 6. 關系表映射

您也可以通過以下操作創建三個單獨的表: •

將 Customer 元素放到單元格 A3 中(只選擇 Customer/Id、Customer/Name 和 Customer/Address)。 •

將 Order 元素放到單元格 A7 中(只選擇 Customer/Order/Id 和 Customer/Order/Date)。 •

將 Product 元素放到單元格 A13 中(只選擇 Customer/Order/Product/Name 和 Customer/Order/Product/Quantity)。

 在 Excel 2003 中創建 XML 映射圖片7

圖 7. 關系表映射的多表視圖

XML 實例

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Customer> <Id>1</Id> <Name>Janet Q. Leverling</Name> <Address> <AddressLine>123 Elm</AddressLine> <City>Pleasantville</City> <State>WA</State> <zip>12345</zip> </Address> <Order> <Id>1</Id> <Date>3/2/01</Date> <Product> <Name>Widget</Name> <Quantity>3</Quantity> </Product> <Product> <Name>Sprocket</Name> <Quantity>7</Quantity> </Product> </Order> <Order> <Id>2</Id> <Date>4/7/01</Date> <Product> <Name>Widget</Name> <Quantity>1</Quantity> </Product> </Order> </Customer> <Customer> <Id>2</Id> <Name>Nancy Davolio</Name> <Address> <AddressLine>123 Main</AddressLine> <City>Mayberry</City> <State>WA</State> <zip>12345</zip> </Address> <Order> <Id>3</Id> <Date>5/1/01</Date> <Product> <Name>Widget</Name> <Quantity>5</Quantity> </Product> <Product> <Name>Sprocket</Name> <Quantity>2</Quantity> </Product> </Order> <Order> <Id>4</Id> <Date>5/8/01</Date> <Product> <Name>Widget</Name> <Quantity>4</Quantity> </Product> </Order> </Customer> </Root>

XSD

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="Root"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="0" maxOccurs="unbounded" name="Customer"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="Id" /> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="Name" /> <xsd:element minOccurs="0" maxOccurs="1" name="Address"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="AddressLine" /> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="City" /> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="State" /> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="zip" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element minOccurs="0" maxOccurs="unbounded" name="Order"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="Id" /> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="Date" /> <xsd:element minOccurs="0" maxOccurs="unbounded" name="Product"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="Name" /> <xsd:element minOccurs="0" maxOccurs="1" type="xsd:string" name="Quantity" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> 創建多維表

用戶界面

當您將 FlightReport 或Root 元素放到單元格 A3 中時,該單元格將如下所示:

 在 Excel 2003 中創建 XML 映射圖片8

圖 8. 多維映射

XML 實例

<?xml version="1.0"?> <Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <FlightReport altitude="1000" weight="10000"> <Measurement> <Airspeed>350</Airspeed> <Vibration>125.6</Vibration> <Noise>62</Noise> <Drag>0.12</Drag> </Measurement> <Measurement> <Airspeed>400</Airspeed> <Vibration>99</Vibration> <Noise>75</Noise> <Drag>0.10</Drag> </Measurement> </FlightReport> <FlightReport altitude="2000" weight="10000"> <Measurement> <Airspeed>350</Airspeed> <Vibration>125.6</Vibration> <Noise>62</Noise> <Drag>0.12</Drag> </Measurement> <Measurement> <Airspeed>400</Airspeed> <Vibration>99</Vibration> <Noise>75</Noise> <Drag>0.10</Drag> </Measurement> </FlightReport> <FlightReport altitude="1000" weight="15000"> <Measurement> <Airspeed>350</Airspeed> <Vibration>125.6</Vibration> <Noise>62</Noise> <Drag>0.12</Drag> </Measurement> <Measurement> <Airspeed>400</Airspeed> <Vibration>99</Vibration> <Noise>75</Noise> <Drag>0.10</Drag> </Measurement> </FlightReport> <FlightReport altitude="2000" weight="15000"> <Measurement> <Airspeed>350</Airspeed> <Vibration>125.6</Vibration> <Noise>62</Noise> <Drag>0.12</Drag> </Measurement> <Measurement> <Airspeed>400</Airspeed> <Vibration>99</Vibration> <Noise>75</Noise> <Drag>0.10</Drag> </Measurement> </FlightReport> </Root>

XSD

<?XML version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">

<element name="Root">
<complexType>
<sequence>
<element name="FlightReport" maxOccurs="unbounded">
<complexType>
<sequence>
<element name="Measurement" maxOccurs="unbounded">
<complexType>
<sequence>
<element name="Airspeed" type="positiveInteger"/>
<element name="Vibration" type="decimal"/><
<element name="Noise" type="positiveInteger"/>
<element name="Drag">
<simpleType>
<restriction base="decimal">
<pattern value="[0-9]{1,2}.[0-9]{2}"/>
</restriction>
</simpleType>
</element>
</sequence>
</complexType>
</element>
</sequence>
<attribute name="altitude" type="positiveInteger"/>
<attribute name="weight" type="positiveInteger"/>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>

創建一個以屬性為中心的映射

用戶界面

當您將 FlightReport 或Root 元素放到單元格 A3 中時,該單元格將如下所示:

 在 Excel 2003 中創建 XML 映射圖片9

圖 9. 以屬性為中心的映射

XML 實例

<?xml version="1.0"?> <Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Employees EmployeeId="1" FirstName="Janet" LastName="Leverling" Title="Sales Representative"/> <Employees EmployeeId="2" FirstName="Nancy" LastName="Davolio" Title="Technical Advisor"/> <Employees EmployeeId="3" FirstName="Robert" LastName="Fuller" Title="Accountant"/> </Root>

XSD

<?xml version="1.0"?> <schema xmlns="http://www.w3.org/2001/XMLSchema"> <element name="Root"> <complexType> <sequence> <element name="Employees" maxOccurs="unbounded"> <complexType> <attribute name="EmployeeId" type="positiveInteger"/> <attribute name="FirstName" type="string"/> <attribute name="LastName" type="string"/> <attribute name="Title"> <simpleType> <restriction base="string"> <enumeration value="Sales Representative"/> <enumeration value="Technical Advisor"/> <enumeration value="Accountant"/> </restriction> </simpleType> </attribute> </complexType> </element> </sequence> </complexType> </element> </schema>

顯然,有像架構一樣盡可能多的格式來創建它們。這裡介紹這組格式化可能性的目的是,為您開發和精細調整您自己的架構提供一個起點。小結

架構使您能夠指定哪些元素、屬性、數據類型和層次結構允許在 XML 數據文件中出現。您可以使用架構文件驗證 XML 數據,並在交換數據時

確保可預見性。由於該可預見性,您可以調整您的架構來確保數據可以正確顯示。在 Excel 中,您使用 XML Source 任務網格將元素映射到

單元格。然後,將 XML 數據導入到一個最適合您需要的窗體是相對較容易的。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved