DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> 創建一個 NIEM IEPD,第 4 部分: 組裝 IEPD
創建一個 NIEM IEPD,第 4 部分: 組裝 IEPD
編輯:XML詳解     

信息交換包文檔(Information Exchange Package Documentation,IEPD) 是一個由描述國家信息交換模型(National Information Exchange Model,NIEM)交換的文檔組成的文檔集合。它一般包括架構、樣例、各種文檔和呈現指令。也包括幾個 NIEM 特定的工件(比如元數據文檔和編錄文件),它們是遵循 NIEM 的交換中所必需的。

  在本系列中,我講述了一個簡單的例子,即 Theft Report IEPD。既然 UML 模型、組件映射表(Component Mapping Table,CMT)和架構都完成了,那麼完成 IEPD 就只剩下很少的幾步了:

  常用縮寫詞

  CMT:組件映射模板

  Html:超文本標記語言

  IEPD:信息交換包文檔

  NIEM:國家信息交換模型

  UML:統一建模語言

  XHtml:可擴展超文本標記語言

  XML:可擴展標記語言

  XSLT:可擴展樣式表轉換

  創建更多文檔相關的工件,以進一步解釋交換。具體來說,我需要添加:

  主文檔。用於概要描述交換

  一個樣例文檔。用於展示實際的消息結構和測試架構

  呈現指示。用於提供樣例文檔的人類可讀的視圖

  以遵循 NIEM 的方式組裝 IEPD,這涉及到使用 NIEM "Work with IEPDs" 工具來上載工件和生成附加的文檔文件。

  使用 NIEM Conformance Validation Tool 驗證 IEPD 的完整性和 NIEM 遵從性。

  發布 IEPD,以便它可被其他用戶發現。

  IEPD 文檔

  要遵循 NIEM,IEPD 必須至少包含某種形式的主文檔和一個變更日志,後者描述自最近版本以來發生的變更。可以在 IEPD 中包含任意文檔(通常伴隨著一個軟件應用程序),要麼包含在主文檔中,要麼作為單獨的文件,比如:

UML 模型(順序圖、用例、類圖)

  一個 CMT

  業務規則(即對沒有表示在架構或模型中的數據的約束)

  需求定義

  測試和/或遵從性聲明

  諒解備忘錄和保證函

  我到目前為止為 Theft Report IEPD 開發的文檔工件是一個 UML 模型和一個 CMT。我需要添加主文檔,以簡單描述交換的目的和結構。我還要添加一個變更日志,它實際上是空的,因為這是交換的第一個版本。參見 下載 中一個完整的 IEPD,它包含這些文檔。

  創建樣例文檔

  樣例 XML 文檔是 IEPD 的重要部分。僅僅根據架構,難以對 XML 文檔形成概念,尤其是在談論錯綜復雜的一組相關架構文檔時。使用樣例就能清楚地看出任何給定文檔類型中哪個元素是根元素,並為每個元素提供典型數據的例子。

  為交換架構中每個不同的根元素至少包含一個樣例。如果將一種文檔類型用於多種目的,那麼應該為每種目的提供一個樣例。為了測試架構和任何被編寫來處理文檔的軟件,有必要創建一個包含每種可能元素的樣例。對於復雜的交換,創建一個 典型 樣例也是很有用的,其中包含任何給定文檔可能包含的內容。

  很多 XML 編輯器會為您生成樣例文檔,但是這些文檔一般包含的是無意義的數據,不具有正確相關的 ID 和關聯中使用的 IDREF 值。您應該編輯任何生成的樣例,讓它們更為典型且富有含義。由於各種處理程序處理架構位置提示的方式各不相同,所以我也建議您用多個處理程序驗證樣例。

  對於 Theft Report IEPD,我只具有一個可能的根元素(tr:TheftReport)。清單 1 展示了我創建的一個完整樣例的開始部分。它至少具有交換中允許的一種元素類型,並具有數據的代表值。

清單 1. 一個樣例文檔的開始部分

<?XML-stylesheet type="text/xsl" href="theftreport.xsl" ?> 
<tr:TheftReport XMLns:tr="http://datypic.com/theftreport/Exchange/1.0" 
 XMLns:nc="http://niem.gov/niem/nIEm-core/2.0" 
 XMLns:trext="http://datypic.com/theftreport/extension/1.0" 
 XMLns:j="http://niem.gov/nIEm/domains/jxdm/4.1" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 XMLns:s="http://niem.gov/nIEm/structures/2.0" 
 xsi:schemaLocation="http://datypic.com/theftreport/Exchange/1.0 
           ../schema/exchange/1.0/theftreport-Exchange.xsd"> 
  <tr:TheftReportDate>2006-05-05</tr:TheftReportDate> 
  <trext:Theft s:id="T1"> 
    <nc:ActivityDate> 
      <nc:DateTime>2006-05-04T08:15:00</nc:DateTime> 
    </nc:ActivityDate> 
  </trext:Theft> 
  <trext:Theft s:id="T2"> 
    <nc:ActivityDate> 
      <nc:DateTime>2006-05-04T09:14:00</nc:DateTime> 
    </nc:ActivityDate> 
  </trext:Theft> 
    <nc:ActivityConveyanceAssociation> 
      <nc:ActivityReference s:ref="T1"/> 
      <nc:ConveyanceReference s:ref="V1"/> 
    </nc:ActivityConveyanceAssociation> 
    <nc:ActivityConveyanceAssociation> 
      <nc:ActivityReference s:ref="T2"/> 
      <nc:ConveyanceReference s:ref="B1"/> 
    </nc:ActivityConveyanceAssociation> 
    <trext:Vehicle s:id="V1"> 
      <nc:ItemDescriptionText>2001 Subaru Outback</nc:ItemDescriptionText> 
      <nc:ItemSerialIdentification> 
         <nc:IdentificationID>123455234234</nc:IdentificationID> 
      </nc:ItemSerialIdentification> 
      <nc:VehicleColorPrimaryCode>SIL</nc:VehicleColorPrimaryCode> 
      <nc:ConveyanceRegistrationPlateIdentification> 
         <nc:IdentificationID>BGE112</nc:IdentificationID> 
      </nc:ConveyanceRegistrationPlateIdentification> 
      <trext:VehicleTaxClassCode>4</trext:VehicleTaxClassCode> 
    </trext:Vehicle> 
  ... 


創建呈現指令

  呈現指令是另一個有用的工具,用於幫助 IEPD 的用戶和實現者掌握交換的情況。查看復雜的 XML 文檔並理解其內容是很困難的 — 尤其是在典型的 NIEM 文檔中,這樣的文檔具有大量結構元素和連接文檔不同部分的關聯。有些用戶關注結構的復雜性和元素的名稱,更甚於關注實際內容。

  如果您編寫呈現指令來將 XML 數據轉換成人類可讀的 Html,那麼可以減輕該問題。關聯的對象可以被重新連結並一起顯示在頁面上,無關的結構可以被忽略,隱含的代碼清單值可以被轉換成可讀的等價物。

  XML 文檔的呈現通常是利用 XSLT 電子表格做到的。對於簡單的 HTML 呈現,我一般推薦采用 XSLT version 1.0,因為該版本在主要浏覽器中都受到支持。在樣例所在的同一目錄中提供一個 XSLT 電子表格,可以讓用戶雙擊樣例(或者在 XML 編輯器中打開)並看到所呈現的 Html 版本。清單 1 第一行中的處理指令(以 <?XML-stylesheet 開始)指出使用哪個 XSLT 電子表格。

  對於 Theft Report IEPD,我創建了一個相當簡單的 XSLT 1.0 電子表格(包含在 下載 部分的 IEPD 中),它以用戶友好的方式顯示 Theft Report,如 圖 1 所示。XSLT 連結每起盜竊事件及其關聯的位置、車型、失主和證人,以符合邏輯地顯示數據。

圖 1. 呈現的樣例
創建一個 NIEM IEPD,第 4 部分: 組裝 IEPD

  查看原圖(大圖) 

  組裝 IEPD

  NIEM 提供一個 “Work with IEPDs” 工具,用於聚集 IEPD 工件和組裝完整的包。盡管可以手工組裝 IEPD,但是使用工具通常更為容易,因為工具會自動生成 NIEM 遵從性所必需的兩個 NIEM 特定的工件:元數據文檔和編錄文件,後者充當內容表格。並且產生的 IEPD 具有更加一致的文件結構。

要使用該工具,單擊頁面左邊菜單中的 Create/Upload IEPD。這樣會帶您進入 圖 2 所示的頁面。

圖 2. Create/upload an IEPD 頁面
創建一個 NIEM IEPD,第 4 部分: 組裝 IEPD

  查看原圖(大圖)

  單擊 Begin 之後,會詢問您是否具有想要上載的現有 IEPD 壓縮文件。如果已經具有一組壓縮的 IEPD 工件,就可以單擊 Yes 並上載該壓縮文件。為 Theft Report 例子使用該工具時,我是單擊 No 以單獨上載每個文件。

  單擊 No,工具將顯示 圖 3 所示頁面。該頁面允許您指定根目錄名稱。對於 Theft Report,我選擇 TheftReport 作為根目錄。還是在該頁面上,要向 IEPD 添加單個工件,可單擊 Add Artifact 鏈接。

圖 3. Upload Artifacts 頁面
創建一個 NIEM IEPD,第 4 部分: 組裝 IEPD

  查看原圖(大圖)

  使用該頁面添加擴展和交換架構、wantlist、子集、樣例文檔、呈現指令、CMT、UML 模型、變更日志及主文檔。注意,應該將子集架構壓縮到一個文件中;當工具重新生成 IEPD 時,它將被解壓。

  對於添加的每個工件,您應該選擇一種類型。這樣做是很重要的,因為它影響著生成編錄文件的方式和用於組件的默認目錄。您也可以在該頁面選擇一個目錄路徑。為了一致性,請對每個工件單擊 use recommended path,工具將會填充路徑。我對推薦的路徑所做的惟一更改是,為交換和擴展架構包含了一個 1.0 子目錄,因為我想要目錄結構與名稱空間名稱形成鏡像。我還為每個工件添加了一個描述。圖 4 顯示了結果。


圖 4. 添加的工件
創建一個 NIEM IEPD,第 4 部分: 組裝 IEPD

  查看原圖(大圖)

  在添加工件時,單擊 Next 進入 圖 5 所示的 Enter Metadata 頁面。在該頁面上,提供關於 IEPD 的元數據,比如名稱、描述、版本、組織和聯系點。工具使用該信息來生成一個叫做 metadata.xml 的 XML 文檔,該文檔與 IEPD 包含在一起。

圖 5. Enter Metadata 頁面
創建一個 NIEM IEPD,第 4 部分: 組裝 IEPD

  查看原圖(大圖)

  關於該頁面,稍微有點混淆的地方是,NIEM 遵從性所必需的字段並沒有全都標記有黃色星號。稍後驗證 IEPD 時,如果缺少任何必需的元數據,您會收到通知。一般來說,最好把相關的內容都填好。填寫完元數據之後,單擊 Next 進入 圖 6 所示的摘要頁面。

圖 6. IEPD 摘要頁面
創建一個 NIEM IEPD,第 4 部分: 組裝 IEPD

  查看原圖(大圖)

  從該頁面,可以單擊 Validate IEPD 以確定您的 IEPD 是否包含所有必需的元數據。通過驗證之後,單擊 Upload IEPD 以將該 IEPD 保存在您的概要文件中,以便稍後您可以在 My IEPDs 下檢索它。注意,上載 IEPD 並不自動使得它對網站的其他用戶可見。


最後,要實際生成 IEPD,可從 IEPD Successfully Uploaded 頁面單擊 Download。通過從工具頁面左邊的菜單中單擊 My IEPDs,可以在任何時候下載、修改或刪除您的任何 IEPD。

  來看一下生成的 IEPD,可以看到您上載的所有工件的副本,還有兩個生成的文件。清單 2 中的 metadata.XML 文檔為關於交換的信息提供一個標准化的 cross-IEPD 格式。

清單 2. 元數據文檔

<?XML version="1.0" encoding="UTF-8"?> 
<Metadata> 
  <URI>http://www.datypic.com/theftreport</URI> 
  <Name>Theft Report</Name> 
  <Summary>Exchange to report thefts of motor vehicles and bicycles in the state 
        on a daily basis</Summary> 
  <Description>Contains information about a theft of a motor vehicle or bicycle, 
        including the theft date, location, description and identifIErs of 
        the stolen property, and victim and witness information.</Description> 
  <Version>1.0</Version> 
  <URL>http://www.datypic.com/theftreport</URL> 
  <CreationDate>03/01/2010</CreationDate> 
  <LastRevisionDate>03/01/2010</LastRevisionDate> 
  <NextRevisionDate>06/01/2010</NextRevisionDate> 
  <NIEMVersion>2.0</NIEMVersion> 
  <Security>Public</Security> 
  <Maturity>2</Maturity> 
  <Status>Final</Status> 
  <Schedule/> 
  <Lineage/> 
  <Relationships/> 
  <KeyWords/> 
  <Domain>Justice, </Domain> 
  <ExchangePartners/> 
  <Process/> 
  <TriggeringEvent/> 
  <Conditions/> 
  <Endorsements/> 
  <Sponsors>Datypic</Sponsors> 
  <Purpose>Report thefts of motor vehicles and bicycles to interested partIEs</Purpose> 
  <MessageExchangePatterns>publish/subscribe</MessageExchangePatterns> 
  <CommunicationsEnvironment/> 
  <ExchangePartnerCategorIEs>Law Enforcement, DMV, 
                 Department of Revenue</ExchangePartnerCategorIEs> 
  <AuthoritativeSource> 
    <Category>none</Category> 
    <Organization> 
      <Name>Datypic</Name> 
      <Address1/> 
      <Address2/> 
      <City/> 
      <State/> 
      <Zip/> 
      <Country/> 
      <URL>http://www.datypic.com</URL> 
    </Organization> 
    <PointOfContact> 
      <Name>Priscilla Walmsley</Name> 
      <Address1/> 
      <Address2/> 
      <City/> 
      <State/> 
      <Zip/> 
      <Country/> 
      <Phone>231-555-1212</Phone> 
      <Fax/> 
      <Email>[email protected]</Email> 
    </PointOfContact> 
  </AuthoritativeSource> 
</Metadata> 


 

catalog.html 文件是一個 XHTML 文檔,充當 IEPD 中工件的內容表格。它以其人類可讀的呈現形式顯示在 圖 7 中。由於有嵌入在 XHtml 中的 rddl:purpose,編錄文件也是機器可讀的。

圖 7. 呈現的 IEPD 編錄文件
創建一個 NIEM IEPD,第 4 部分: 組裝 IEPD

  查看原圖(大圖)

  驗證 IEPD

  一旦創建了一個 IEPD,就可以使用 NIEM Conformance Validation Tool來測試它的遵從性。該過程確保 IEPD 中有了所有必需的工件。它也針對一些在 NIEM Naming and Design Rules (NDR) 文檔中為遵循 NIEM 的架構定義的規則,而測試架構。

  從 Conformance Validation Tool 主頁面,單擊 Begin 進入 圖 8 所示的頁面。它提示您上載一個文件,該文件將作為一個壓縮文件,成為整個的 IEPD。工具使用編錄文件來確定所有工件的位置和類型。在單擊完要求您驗證工件目的的頁面之後,該頁面出現一個叫做 My Validations 的新部分,其中顯示您的 IEPD 的遵從性報告。

圖 8. Conformance Validation 工具
創建一個 NIEM IEPD,第 4 部分: 組裝 IEPD

  查看原圖(大圖)

  圖 9 顯示了遵從性報告的摘要頁面,該報告采用 Microsoft® Office Excel® 格式。它具有幾個工作表:


 

Summary 是 圖 9 中的基本統計信息。

  NDR - All Rules 提供 NDR 中所有規則的列表,以及對於那些可被自動檢查的規則,IEPD 中的架構是否檢查通過。對於每個不能被自動檢查的規則,一個下拉列表允許您指出您已經手動檢查它。

  NDR - Schemas 是所有架構文檔的摘要,以及它們是不是遵循 NIEM。

  NDR - Rules Auto Failed 是 NDR 規則違反的每個實例的列表。

  IEPD - Metadata 是所有元數據字段的列表,如果它們是必需的,但是卻沒有,則顯示為錯誤。

  IEPD - Catalog 是所有工件類型的列表,如果它們是必需的,但是卻沒有,則顯示為錯誤。

圖 9. Conformance 報告摘要
創建一個 NIEM IEPD,第 4 部分: 組裝 IEPD

  查看原圖(大圖)

  可從 下載 小節得到 Theft Report IEPD 的遵從性報告的完整副本。

  將 IEPD 提交到公共倉庫

  IEPD 是准備進行共享的。盡管 NIEM 通過提供公共定義和技術而有助於互操作,但是兩個使用不同 NIEM 子集的 IEPD 的 XML 文檔是不可互換的。因此,IEPD 的重用對於獲得互操作性是至關重要的。

  為了讓其他人使用使用您的 IEPD,您的 IEPD 必須公共可用,以便被其他人發現。兩個主要的 Web 站點提供現有 IEPD 的目錄,而且將 IEPD 提交到這些站點很容易。

  首先,您可以在 NIEM Web 站點本身列出您的 IEPD,使之在 Work with IEPDs 工具的 Search 功能下可用。要在 Work with IEPDs 工具中做到這一點,請打開 IEPD 摘要頁面。單擊右上角的 Edit 鏈接,然後單擊 Edit Visibility/Sharing 以打開 圖 10 中的 Edit Artifact Visibility 頁面。


圖 10. Edit IEPD Visibility
創建一個 NIEM IEPD,第 4 部分: 組裝 IEPD

  查看原圖(大圖)

  從該頁面,選擇 Shared 讓 IEPD 變得可見。即使 IEPD 本身是可見的,您也可以隱藏單個工件(通過取消選擇它們旁邊的復選框)。這允許用戶看到 IEPD,即使單個工件被隱藏。完成後單擊 Update Visibility。

  第二個可以提交 IEPD 的地方是 Office of Justice Programs (OJP) IEPD Clearinghouse。為此,訪問 clearinghouse Web 站點,並單擊 Submit IEPD Information 以得到一個窗體,在該窗體上可以上載 IEPD。

  LEXS:另一種創建整個 IEPD 的方法

  既然理解了開發 NIEM IEPD 的過程,再來考慮一下這是否是您應該執行的任務。本系列 第 1 部分 建議您,在從新創建自己的 IEPD 之前,考慮重用現有的 IEPD。這不僅可以改善與其他應用程序的互操作性,並且省時省力。

  但是,有時難以找到滿足您的所有需求的 IEPD。在這樣的情況下,一個很好的解決方案是 Logical Entity Exchange Specification (LEXS)。LEXS 是一個 NIEM IEPD 框架,它通過將文檔分成一個摘要(digest)和一個結構化有效載荷(structured payload),平衡了互操作性和靈活性這兩個對立的目標。摘要中包含最常用的 NIEM 組件,有固定的結構,可跨所有基於 LEXS 的 IEPD 進行互操作。結構化有效載荷允許單個基於 LEXS 的 IEPD 擴展和定制 LEXS 庫模型。LEXS 也為處理消息交換、搜索、訂閱、附加和呈現提供解決方案。

  結束語

  本系列描述創建 NIEM IEPD 的過程,本文是本系列的最後一篇文章。在這個系列中,您看到了如何建模一個交換、為模型創建一個適當的 NIEM 子集,以及編寫自己的 NIEM 擴展。本文描述了最後一步:將架構、文檔和其他工件組裝成 IEPD。遵循這些針對遵從 NIEM 的交換的指導方針,將有助於您利用 NIEM 的承諾,即促進公共和私有組織之間的信息共享。

  本文示例源代碼或素材下載



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