黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

您應(yīng)該知道的十種 XML 模式

系統(tǒng) 2470 0
本文考察了一些頂尖的 XML 模式,這些模式為各種各樣的問(wèn)題提供了解決方案,從基本的 Web 服務(wù)到數(shù)據(jù)描述等等。其中包括涉及到通訊錄和發(fā)票的類似數(shù)據(jù)庫(kù)的解決方案。本文選擇模式的標(biāo)準(zhǔn)是根據(jù)其實(shí)用性和用途,及其在 XML 信息共享和交換方面對(duì) XML 社區(qū)的影響。
<!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --> <!--END RESERVED FOR FUTURE USE INCLUDE FILES-->

SOAP

常用的縮寫詞
  • Ajax:異步 Javascript + XML(Asynchronous JavaScript + XML)
  • CPU:中央處理單元(Central Processing Unit)
  • CSS:級(jí)聯(lián)樣式表(Cascading Stylesheets)
  • HTML:超文本標(biāo)記語(yǔ)言(Hypertext Markup Language)
  • OASIS:結(jié)構(gòu)化信息標(biāo)準(zhǔn)推進(jìn)組織(Organization for the Advancement of Structured Information Standards)
  • PDF:可移植的文檔格式(Portable Document Format)
  • W3C:萬(wàn)維網(wǎng)聯(lián)盟(World Wide Web Consortium)
  • XHTML:可擴(kuò)展超本文標(biāo)記語(yǔ)言(Extensible HyperText Markup Language)
  • XML:可擴(kuò)展標(biāo)記語(yǔ)言
  • XSLT:可擴(kuò)展樣式表語(yǔ)言轉(zhuǎn)換(Extensible Stylesheet Language Transformations)

簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(Simple Object Access Protocol,SOAP)實(shí)際上是一種 Web 服務(wù)技術(shù),但 Web 服務(wù)中客戶機(jī)和服務(wù)器之間的數(shù)據(jù)交換格式是通過(guò)靈活的 XML 模式實(shí)現(xiàn)的。

Web 服務(wù)的主要優(yōu)點(diǎn)是客戶機(jī)和服務(wù)器通過(guò)網(wǎng)絡(luò)進(jìn)行信息和數(shù)據(jù)交換的互操作性的層次。SOAP 標(biāo)準(zhǔn)使用 XML 以一種體系結(jié)構(gòu)中立的格式來(lái)構(gòu)造數(shù)據(jù),定義數(shù)據(jù)類型和信息。

對(duì)于編程語(yǔ)言來(lái)說(shuō),只需要提供數(shù)據(jù)類型和需要在遠(yuǎn)程服務(wù)器上調(diào)用的函數(shù)名稱即可。SOAP 庫(kù)將用主機(jī)語(yǔ)言編寫的信息和格式轉(zhuǎn)化成 XML 格式的消息,其中包括調(diào)用的函數(shù)和提供的參數(shù)。

通過(guò) W3C 的例子就可以了解 SOAP 的結(jié)構(gòu)。調(diào)用遠(yuǎn)程 SOAP 函數(shù) GetEndorsingBoarder() 的時(shí)候,客戶機(jī)上的調(diào)用程序生成清單 1 所示的 XML 消息。








清單 1. 調(diào)用遠(yuǎn)程 SOAP 函數(shù) GetEndorsingBoarder()
            
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetEndorsingBoarder xmlns:m="http://namespaces.snowboard-info.com">
<manufacturer>K2</manufacturer>
<model>Fatbob</model>
</m:GetEndorsingBoarder>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SOAP 客戶機(jī)發(fā)送的整個(gè)消息都放在 SOAP 信封中。信封的內(nèi)容就是消息的詳細(xì)內(nèi)容。

被調(diào)用的函數(shù)顯然是 GetEndorsingBoarder ,它包括兩個(gè)參數(shù):manufacturer 和 model。由此可見,它把本地的可能采用二進(jìn)制編碼的字符串轉(zhuǎn)化成了 XML 字符串。由于 XML 是平臺(tái)獨(dú)立的,主機(jī)使用 SOAP 系統(tǒng)不需要復(fù)雜的二進(jìn)制編碼和解碼就可以交換消息。

服務(wù)器通過(guò)另一個(gè) XML 編碼的 SOAP 信封返回響應(yīng),這一次是函數(shù)的返回值。SOAP 請(qǐng)求的響應(yīng)格式與函數(shù)相同,只不過(guò)在信封內(nèi)容的后面加上了 Response ,如清單 2 所示。


清單 2. SOAP 請(qǐng)求的響應(yīng)
            
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetEndorsingBoarderResponse xmlns:m="http://namespaces.snowboard-info.com">
<endorsingBoarder>Chris Englesmann</endorsingBoarder>
</m:GetEndorsingBoarderResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

通常不需要自己編寫 SOAP 消息,SOAP 庫(kù)會(huì)自動(dòng)生成。不過(guò) SOAP 信封的結(jié)構(gòu)和簡(jiǎn)單性表明使用 SOAP 標(biāo)準(zhǔn)共享信息很簡(jiǎn)單。

SOAP 大大簡(jiǎn)化了交換消息和調(diào)用遠(yuǎn)程函數(shù)的工作。遠(yuǎn)程過(guò)程調(diào)用(Remote Procedure Call,RPC)標(biāo)準(zhǔn)需要復(fù)雜的方法來(lái)處理二進(jìn)制數(shù)據(jù)的序列化,發(fā)送結(jié)構(gòu)化更高的信息需要詳細(xì)的聲明和雙向的信息轉(zhuǎn)換。

使用 SOAP,XML 序列化大大降低了這種復(fù)雜性,使得跨平臺(tái)、跨語(yǔ)言集成和數(shù)據(jù)交換更加簡(jiǎn)單。








WSDL

Web 服務(wù)描述語(yǔ)言(Web Services Description Language,WSDL)提供了一種描述 Web 服務(wù)(大多使用 SOAP)的簡(jiǎn)單方法。WSDL 允許您描述利用 SOAP 標(biāo)準(zhǔn)所提供的服務(wù)和接口。

比 方說(shuō),可以創(chuàng)建描述某臺(tái)服務(wù)器上提供的服務(wù)的 WSDL 文件,然后把該文件分發(fā)給需要這些服務(wù)的 Web 服務(wù)消費(fèi)者。通過(guò)閱讀和解析 WSDL 文件,消費(fèi)者能夠了解到使用這些 Web 服務(wù)需要知道的所有信息,包括可以交換的數(shù)據(jù)類型、參數(shù)以及返回的各種錯(cuò)誤和其他信息。

再次使用來(lái)自 W3C 的例子,可以看到不同遠(yuǎn)程函數(shù)的聲明和交換的數(shù)據(jù)都是通過(guò)結(jié)構(gòu)的 XML 定義處理的,如清單 3 所示。


清單 3. 不同遠(yuǎn)程函數(shù)和交換數(shù)據(jù)的 XML 定義
            
<?xml version="1.0"?>

<!-- root element wsdl:definitions defines set of related services -->
<wsdl:definitions name="EndorsementSearch"
targetNamespace="http://namespaces.snowboard-info.com"
xmlns:es="http://www.snowboard-info.com/EndorsementSearch.wsdl"
xmlns:esxsd="http://schemas.snowboard-info.com/EndorsementSearch.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

<!-- wsdl:types encapsulates schema definitions of communication types;
here using xsd -->
<wsdl:types>

<!-- all type declarations are in a chunk of xsd -->
<xsd:schema targetNamespace="http://namespaces.snowboard-info.com"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">

<!-- xsd definition: GetEndorsingBoarder [manufacturer string,
model string] -->
<xsd:element name="GetEndorsingBoarder">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="manufacturer" type="string"/>
<xsd:element name="model" type="string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<!-- xsd definition: GetEndorsingBoarderResponse
[... endorsingBoarder string ...] -->
<xsd:element name="GetEndorsingBoarderResponse">
<xsd:complexType>
<xsd:all>
<xsd:element name="endorsingBoarder" type="string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>

<!-- xsd definition: GetEndorsingBoarderFault
[... errorMessage string ...] -->
<xsd:element name="GetEndorsingBoarderFault">
<xsd:complexType>
<xsd:all>
<xsd:element name="errorMessage" type="string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>

</xsd:schema>
</wsdl:types>

<!-- wsdl:message elements describe potential transactions -->

<!-- request GetEndorsingBoarderRequest is of type GetEndorsingBoarder -->
<wsdl:message name="GetEndorsingBoarderRequest">
<wsdl:part name="body" element="esxsd:GetEndorsingBoarder"/>
</wsdl:message>

<!-- response GetEndorsingBoarderResponse is of type
GetEndorsingBoarderResponse -->
<wsdl:message name="GetEndorsingBoarderResponse">
<wsdl:part name="body" element="esxsd:GetEndorsingBoarderResponse"/>
</wsdl:message>

<!-- wsdl:portType describes messages in an operation -->
<wsdl:portType name="GetEndorsingBoarderPortType">

<!-- the value of wsdl:operation eludes me -->
<wsdl:operation name="GetEndorsingBoarder">
<wsdl:input message="es:GetEndorsingBoarderRequest"/>
<wsdl:output message="es:GetEndorsingBoarderResponse"/>
<wsdl:fault message="es:GetEndorsingBoarderFault"/>
</wsdl:operation>
</wsdl:portType>

<!-- wsdl:binding states a serialization protocol for this service -->
<wsdl:binding name="EndorsementSearchSoapBinding"
type="es:GetEndorsingBoarderPortType">

<!-- leverage off soap:binding document style ...(no wsdl:foo pointing at
the soap binding) -->
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>

<!-- semi-opaque container of network transport details classed by
soap:binding above ... -->
<wsdl:operation name="GetEndorsingBoarder">

<!-- again bind to SOAP? ... -->
<soap:operation soapAction="http://www.snowboard-info.com/
EndorsementSearch"/>

<!-- further specify that the messages in the wsdl:operation
"GetEndorsingBoarder" use SOAP? ... -->
<wsdl:input>
<soap:body use="literal"
namespace="http://schemas.snowboard-info.com/EndorsementSearch.xsd"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"
namespace="http://schemas.snowboard-info.com/EndorsementSearch.xsd"/>
</wsdl:output>
<wsdl:fault>
<soap:body use="literal"
namespace="http://schemas.snowboard-info.com/EndorsementSearch.xsd"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>

<!-- wsdl:service names a new service "EndorsementSearchService" -->
<wsdl:service name="EndorsementSearchService">
<wsdl:documentation>snowboarding-info.com Endorsement Service</
wsdl:documentation>

<!-- connect it to the binding "EndorsementSearchSoapBinding" above -->
<wsdl:port name="GetEndorsingBoarderPort"
binding="es:EndorsementSearchSoapBinding">

<!-- give the binding an network address -->
<soap:address location="http://www.snowboard-info.com/EndorsementSearch"/>
</wsdl:port>
</wsdl:service>

</wsdl:definitions>

WSDL 聲明了消息類型、默認(rèn)數(shù)據(jù)類型和內(nèi)容以及交換的數(shù)據(jù)結(jié)構(gòu)。

訪問(wèn)服務(wù)器上 SOAP 結(jié)構(gòu)需要使用的一切信息都可以在這個(gè) WSDL 中找到。大多數(shù)語(yǔ)言和環(huán)境都提供一種閱讀和解析 WSDL 的機(jī)制,以確定可用的函數(shù)和數(shù)據(jù)交換。

WSDL 不僅定義了用于交換信息的 SOAP 接口,通過(guò)適當(dāng)?shù)?WSDL 生成程序,還可用于創(chuàng)建發(fā)送請(qǐng)求、生成并格式化響應(yīng)所需要的代碼。

WSDL 和 SOAP 組成了一個(gè)強(qiáng)大的遠(yuǎn)程過(guò)程調(diào)用系統(tǒng)。








RDF

語(yǔ) 義 Web(Semantic Web)和語(yǔ)義網(wǎng)格(Semantic Grid)技術(shù)都依賴于資源描述框架(Resource Description Framework,RDF)這種靈活的描述語(yǔ)言。RDF 格式實(shí)際上是一個(gè)標(biāo)準(zhǔn)家族的成員之一。它用于描述信息和資源,使得系統(tǒng)很容易連接和關(guān)聯(lián)不同的資源。

RDF 是另一種經(jīng)過(guò) W3C 批準(zhǔn)的標(biāo)準(zhǔn),它用于定義信息和資源。RDF 不需要 XML,但一種用于描述信息的序列化格式采用了 XML。

定義資源需要指定一個(gè)包含主語(yǔ)、謂詞和賓語(yǔ)的表達(dá)式。比方說(shuō),如果描述一個(gè)網(wǎng)站的內(nèi)容,主語(yǔ)就是該網(wǎng)站,謂詞是 “包含信息”,賓語(yǔ)就是內(nèi)容的類型。建立該網(wǎng)站和其他資源的聯(lián)系,可使用 Friend of a Friend (FOAF) 標(biāo)記建立兩個(gè)資源之間的鏈接。

RDF 的目的是將關(guān)于資源和信息的自然語(yǔ)言的陳述轉(zhuǎn)化為機(jī)器可解析的格式。比如可將 The MCSLP.com Website is authored by Martin C Brown 這句話改寫為清單 4 所示的 RDF XML。


清單 4. RDF XML 格式的陳述
            
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="http://www.recshop.fake/siteinfo#">
<rdf:Description rdf:about="http://www.mcslp.com/ ">
<si:author>Martin C Brown</si:author>
</rdf:Description>
</rdf:RDF>

采用 RDF 標(biāo)準(zhǔn)的另一個(gè)例子是新聞?wù)军c(diǎn)和博客早期提供的連鎖系統(tǒng),它們使用 RDF 規(guī)范定義提要內(nèi)容和不同的新聞。清單 5 提供了一個(gè)例子。


清單 5. 利用 RDF 規(guī)范定義提要內(nèi)容和不同的新聞
            
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://my.netscape.com/rdf/simple/0.9/">

<channel>
<title>MCslp</title>
<link>http://www.mcslp.com</link>
<description>MCslp Projects</description>
</channel>


<item>
<title>Voice enabling XMLtitle>
<link>http://mcslp.com/?p=295link>
</item>

...

</rdf:RDF>

RDF 標(biāo)準(zhǔn)最初設(shè)計(jì)的目的是描述 Web 上的資源、內(nèi)容和關(guān)系。但是 RDF 現(xiàn)在變成了用于描述一般信息、資源和關(guān)系的標(biāo)準(zhǔn)。

語(yǔ)義 Web 和網(wǎng)格技術(shù)都需要定義資源及其之間的關(guān)系,使應(yīng)用程序能夠使用不同的信息,并且可以把數(shù)據(jù)捆綁在一起。








vCard

記錄聯(lián)系方式對(duì)所有商務(wù)應(yīng)用程序都非常重要,通過(guò)有效的 XML 結(jié)構(gòu)來(lái)捕獲這些信息可以簡(jiǎn)化此類數(shù)據(jù)的處理。

聯(lián)系信息變化可能很大,因此應(yīng)該選擇 XML 。比如,有些公司和個(gè)人可能有多個(gè)地址、電話號(hào)碼和電子郵件帳戶。在 XML 結(jié)構(gòu)中很容易聲明多個(gè)此類信息片段。

vCard 結(jié)構(gòu)經(jīng)常在 Internet 上用于表示聯(lián)系信息,它獨(dú)立于平臺(tái),很容易生成和導(dǎo)入不同的應(yīng)用程序。它支持 XML 結(jié)構(gòu)的某些靈活性,但實(shí)際上是一種基于文本的簡(jiǎn)單格式,使用聲明性字段和擴(kuò)展來(lái)提供信息。不同于 XML,vCard 格式是扁平文本,就是說(shuō)不能直接向各種元素增加信息。電話號(hào)碼是一個(gè)很好的例子,它不一定和某個(gè)地址關(guān)聯(lián),而僅僅作為記錄中的另一個(gè)電話號(hào)碼。

W3 聯(lián)盟提出一種 vCard 格式的 XML,它采用 RDF XML 標(biāo)準(zhǔn),以便于格式化和交換聯(lián)系信息。采用 RDF 框架可以在聲明過(guò)程中保留一些結(jié)構(gòu)化信息。比如,RDF 標(biāo)準(zhǔn)支持使用包、序列和替代來(lái)描述數(shù)據(jù)。包支持多次聲明一個(gè)對(duì)象(比如多種角色),并且可以在序列不重要時(shí)使用包。序列用于定義對(duì)象的次序,比如機(jī)構(gòu)中人 員角色的層次結(jié)構(gòu)。替代允許從列表中選擇一項(xiàng),比如多個(gè)電子郵件地址。

清單 6 顯示了虛擬人物 Charles Perston 的 vCard。


清單 6. Charles Perston 的 vCard
            
BEGIN:VCARD
VERSION:3.0
N:Perston;Charles;;;
FN:Charles Perston
ORG:Perston Technology;
EMAIL;type=INTERNET;type=WORK;type=pref:null@perston.co.uk
TEL;type=WORK;type=pref:01234 567890
item1.ADR;type=WORK;type=pref:;;Perston House;Perston;Perstonshire;P1 0NS;UK
item1.X-ABADR:gb
X-ABUID:5AE47BB6-4E0F-4558-980C-BD3066FA6154/:ABPerson
END:VCARD

采用 vCard XML 標(biāo)準(zhǔn),可用清單 7 中的結(jié)構(gòu)表示同樣的信息。


清單 7. 使用 vCard XML 標(biāo)準(zhǔn)表示 Charles Perston
            
<vCard:vCard xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
xmlns:foaf="http://xmlns.com/foaf/0.1/" vCard:version="3.0"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" vCard:class="PUBLIC"
xmlns:vCard="x-urn:cpan:ascope:xml-generator-vcard#">
<vCard:fn>Charles Perston</vCard:fn>
<vCard:n>
<vCard:family>Perston</vCard:family>
<vCard:given>Charles</vCard:given>
</vCard:n>
<vCard:adr vCard:del.type="pref;work">
<vCard:street>Perston House</vCard:street>
<vCard:locality>Perston</vCard:locality>
<vCard:region>Perstonshire</vCard:region>
<vCard:pcode>P1 0NS</vCard:pcode>
<vCard:country>UK</vCard:country>
</vCard:adr>
<vCard:email vCard:email.type="internet;pref;work">null@perston.co.uk
</vCard:email>
<vCard:org>
<vCard:orgnam>Perston Technology</vCard:orgnam>
</vCard:org>
</vCard:vCard>

XML 格式更長(zhǎng),但容易理解所看的內(nèi)容以及各部分之間的關(guān)系。這種格式可以了解更詳細(xì)的信息和細(xì)節(jié)。比方說(shuō),很容易在地址中找到需要的國(guó)家,在標(biāo)準(zhǔn) vCard 輸出中該信息是比較隱含的。

再比如,很容易使用 XPath 或者 SAX 事件提取國(guó)家的列表,以便了解位于不同地區(qū)的聯(lián)系人的數(shù)目。








DocBook XML

能夠編寫文檔,然后以多種不同的輸出格式創(chuàng)建它,這曾是許多開發(fā)團(tuán)隊(duì)多年來(lái)的夢(mèng)想。通過(guò) DocBook XML 就可以實(shí)現(xiàn),它不僅保持了語(yǔ)義標(biāo)記,也保持了對(duì)資料格式化與輸出的控制。

控制語(yǔ)義可以指定組成文檔的章節(jié)和段落。在段落中可進(jìn)一步詳細(xì)規(guī)定包含的項(xiàng)。比方說(shuō)可以將命令和函數(shù)名放在單獨(dú)的標(biāo)簽中,如清單 8 所示。


清單 8. 使用單獨(dú)的標(biāo)簽包裝命令和函數(shù)
            
<para>The <command>compile</command> takes the source code of the
material and builds a new class based on the filename. For example, if the filename is
<filename>HelloWorld</filename> then the name of the class generated will be
<classname>HelloWorld</classname>.

顯示不同的元素時(shí)可以選擇不同的輸出樣式和格式,也可選擇相同的樣式。更重要的是,因?yàn)檎Z(yǔ)義信息回會(huì)被返回(比如文檔可能包含對(duì)類名的引用),所以可以在編寫索引時(shí)用它生成一個(gè)列表(該列表包含文檔中詳細(xì)描述的所有類名)。

除了語(yǔ)義標(biāo)記外,文檔的章節(jié)和不同部分還可以用特殊的 ID 標(biāo)記,用這些 ID 建立文檔不同部分的鏈接。有些類型可自動(dòng)完成(章節(jié)、部分以及其他生成目錄的類型),其他則需要明確建立到其他部分的鏈接。

轉(zhuǎn)化成目標(biāo)格式的時(shí)這些鏈接可以自動(dòng)轉(zhuǎn)換成適當(dāng)?shù)母袷健1热纾@個(gè)鏈接會(huì)轉(zhuǎn)換為適當(dāng)?shù)?HTML 頁(yè)面或頁(yè)面中錨的鏈接。如果要生成 PDF,則可以包含目標(biāo)章節(jié)的頁(yè)碼。

這種轉(zhuǎn)換由 XSLT 樣式表完成。現(xiàn)有的標(biāo)準(zhǔn) DocBook XSLT 樣式表支持到標(biāo)準(zhǔn) HTML、XHTML、PDF(通過(guò) FO 標(biāo)準(zhǔn))、Texinfo、Java? Help 和 Man 頁(yè)面的轉(zhuǎn)換。使用標(biāo)準(zhǔn)樣式表還可以將數(shù)據(jù)轉(zhuǎn)化成各種不同的大小和風(fēng)格,書籍、A4 頁(yè)面和幻燈片。

各種輸出格式和標(biāo)記的靈活性意味著:當(dāng)創(chuàng)建文檔時(shí),可以使用相同的文檔源代碼提供打印的手冊(cè)、內(nèi)嵌式的幫助、man 頁(yè)面、在線和上下文感知的信息。使用更傳統(tǒng)的模型,可以分別編寫這些元素。

DocBook XML 在技術(shù)文章社區(qū)得到了廣泛的認(rèn)可,很多公司所有的文檔全部采用 DocBook XML 標(biāo)準(zhǔn)(或它的一個(gè)子集)。







FIXML

FIX 是眾多企業(yè)間數(shù)據(jù)交換格式之一,用于在商業(yè)活動(dòng)中交換信息。此類交換信息通常很重要,比如交易支付數(shù)據(jù)、股票價(jià)格和商業(yè)信息的交換。

這些需要傳輸?shù)男畔⒂袝r(shí)候是非常小的包,有時(shí)候又是大段的數(shù)據(jù)。此類信息交換的傳統(tǒng)格式是鍵/值對(duì),這種形式的信息交換效率非常低。使用 XML 可以簡(jiǎn)化傳遞的數(shù)據(jù)結(jié)構(gòu),尤其是復(fù)雜的數(shù)據(jù)。

在基于 XML 的優(yōu)化版本中,開發(fā)人員設(shè)法壓縮了數(shù)據(jù)文件的大小,同時(shí)使數(shù)據(jù)更易于閱讀。股票數(shù)據(jù)被壓縮到了舊格式的四分之一大小。

除了典型的商業(yè)應(yīng)用外,F(xiàn)IXML 不適合用于其他領(lǐng)域。但如果使用 FIXML 可以提高商業(yè)效率,結(jié)果是每個(gè)人都會(huì)受益。








SVG

可縮放向量圖形(SVG)是一種描述繪圖的 XML 標(biāo)準(zhǔn)。使用 SVG 可以描述線條、形狀、位置及其之間的關(guān)系。最有吸引力的是這些信息可以輸出為需要的格式,包括可縮放的圖形和固定的圖片。

SVG 解決了傳統(tǒng)繪圖過(guò)程中的一些重要問(wèn)題。一般是使用專門的繪圖程序完成的。在不同程序之間共享信息和繪圖一般來(lái)說(shuō)非常困難。保存為 SVG 意味著任何支持 SVG 的應(yīng)用程序都能讀取和處理這些文件。

繪圖的另一個(gè)問(wèn)題是,將它輸出為最常用的(尤其是 Web 上)格式時(shí),必須在顯示或者結(jié)合到其他文檔前翻譯為位圖格式(比如 JPEG 或 PNG)。這種傳統(tǒng)的方法存在一些問(wèn)題。首先,原始繪圖必須明確(通常是手工)導(dǎo)出為位圖格式。

其 次,由于位圖格式以原始繪圖的逐像素表示為基礎(chǔ),為保證圖像的質(zhì)量必須小心選擇和輸出目標(biāo)匹配的尺寸和分辨率。比如,屏幕顯示的分辨率需要 72dpi(或 96dpi)以便和多數(shù)監(jiān)視器的標(biāo)準(zhǔn)分辨率匹配。打印輸出則需要 300 到 2400 DPI。因此和原始文件相比生成的圖像文件可能非常大。

雖然在 PostScript 和 Encapsulated PostScript 之前已經(jīng)存在基于向量的格式,但是對(duì) CPU 的要求非常高,不適合屏幕顯示。

和其他任何向量圖像格式一樣,SVG 也采用各種形狀的列表來(lái)描述圖像內(nèi)容,而不是生成像素表示。比如矩形只需要給出左上角作為起點(diǎn),再加上兩條邊的長(zhǎng)度就行了。圖像的描述用 XML 表示。標(biāo)簽包括直線、矩形、多邊形、圓等等,可以控制這些元素的樣式和格式。

清單 9 給出了一個(gè)例子。這里繪制了一個(gè)矩形、一個(gè)透明的圓和一個(gè)三角形。


清單 9. 簡(jiǎn)單的圖形
            
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg width="100%" height="100%" version="1.1"
xmlns="http://www.w3.org/2000/svg">

<polygon
points="200,100 300,200 150,250"
style="fill:#cccccc;
stroke:#000000;stroke-width:1"/>

<rect x="20" y="20" width="250" height="250"
style="fill:blue;stroke:black;stroke-width:1;
fill-opacity:0.1;stroke-opacity:0.9"/>

<circle cx="100" cy="50" r="40" stroke="red"
fill="red" style="fill-opacity:0.5"/>

</svg>

圖 1 顯示了生成圖像的位圖。


圖 1. 圖像的位圖版本
圖像的位圖版本

SVG 格式描述圖像的文件只有 500 多字節(jié),PNG 接近 9 KB。

SVG 使繪圖變得更小、更容易使用以及更容易兼容不同的應(yīng)用程序。








Dublin Core

Dublin Core 標(biāo)準(zhǔn)是一種信息分類方法,常用于圖書館。Dublin Core 標(biāo)準(zhǔn)有一個(gè) XML Schema 定義了如何使用 XML 描述這類信息。Dublin Core 可以有效地對(duì)各種信息編目,并且使它們易于修改、查詢和使用。

Dublin Core 目前在信息描述和定義中的應(yīng)用使語(yǔ)義 Web 得以現(xiàn)實(shí)。通過(guò)使用一種統(tǒng)一的標(biāo)準(zhǔn)來(lái)描述數(shù)據(jù),同時(shí),更重要的是使用精心設(shè)計(jì)并經(jīng)過(guò)實(shí)踐檢驗(yàn)的解決方案,可以詳細(xì)描述其他 XML 文檔中的數(shù)據(jù),從而可以在不同來(lái)源之間有效地交換和比較信息。

Dublin Core 規(guī)范有自己的模式,但其目的是嵌入更大的 XML 文檔,使用 XML 名稱空間定義描述文檔中其他數(shù)據(jù)所需要的 DC 元素。作為一個(gè)例子,閱讀清單 10 看看如何在 RDF XML 模式中使用 DC 分類系統(tǒng)描述 RDF 實(shí)體的內(nèi)容,比如網(wǎng)站。為此,可以擴(kuò)展前面的 RDF 模式 示例中的結(jié)構(gòu)。


清單 10. 在 RDF XML 模式中使用 DC 分類系統(tǒng)描述 RDF 實(shí)體的內(nèi)容
            
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://my.netscape.com/rdf/simple/0.9/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rss:channel rdf:about="http://www.xml.com/xml/news.rss">
<rss:title>MCSLP</rss:title>
<rss:link>http://mcslp.com/rss </rss:link>
<dc:description>
MCSLP features information, projects and articles from members of the MCSLP team.
</dc:description>
<dc:subject>MCSLP, Grids, XML, Databases, Programming </dc:subject>
<dc:identifier>http://www.mcslp.com</dc:identifier>
<dc:publisher>MCSLP</dc:publisher>
<dc:rights>Copyright 2008, MCSLP</dc:rights>


</rdf:RDF>

清單 10 中使用 DC 元素添加描述、主題、發(fā)布者、版權(quán)和標(biāo)識(shí)符信息以便對(duì) RSS 提要分類。

完整的 Dublin Core Metadata Elements Set 包括 15 個(gè)元數(shù)據(jù)元素。

  1. Title
  2. Creator
  3. Subject
  4. Description
  5. Publisher
  6. Contributor
  7. Date
  8. Type
  9. Format
  10. Identifier
  11. Source
  12. Language
  13. Relation
  14. Coverage
  15. Rights

這為描述信息提供了一個(gè)廣闊的范圍。








XForms

XForms XML 標(biāo)準(zhǔn)用于定義表單中的不同成分(字段、單選按鈕和列表等輸入控件)以及希望在表單中提供的信息驗(yàn)證。

XForms XML 標(biāo)準(zhǔn)和 Web 開發(fā)人員熟悉的 HTML、XHTML 表單標(biāo)記非常相似,并將成為 XHTML 2.0 標(biāo)準(zhǔn)的一部分。

XForms XML 基于簡(jiǎn)單的模型、視圖、控制器格式。模型是表單的整體描述,包括字段、輸入約束以及數(shù)據(jù)提交方式。視圖定義了出現(xiàn)在表單中的控件、分組及其引用的模型字段。表單控件的格式和呈現(xiàn)由 CSS 控制。

XForms 標(biāo)準(zhǔn)通過(guò)更詳細(xì)地劃分表單信息擴(kuò)展了傳統(tǒng)的 HTML 表單定義。填充表單的過(guò)程中可使用動(dòng)態(tài)元素(目前一般只能通過(guò) JavaScript 或 Ajax 元素實(shí)現(xiàn))。

清單 11 中可以看到一個(gè)簡(jiǎn)單的文本輸入框和彈出式的選擇框。


清單 11. 簡(jiǎn)單的文本輸入框和彈出選擇框
            
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:xforms="http://www.w3.org/2002/xforms">
<head>
<title>XForms Sample</title>
<xforms:model>
<xforms:instance>
<Name xmlns="">
<FName />
<LName />
<Title />
</Name>
</xforms:instance>
</xforms:model>
</head>
<body>
<xforms:select1 ref="Title">
<xforms:label>Title:</xforms:label>
<xforms:item>
<xforms:label>Mr</xforms:label>
<xforms:value>Mr</xforms:value>
</xforms:item>
<xforms:item>
<xforms:label>Mrs</xforms:label>
<xforms:value>Mrs</xforms:value>
</xforms:item>
</xforms:select1>
<xforms:input ref="FName">
<xforms:label>First name: </xforms:label>
</xforms:input>
<xforms:input ref="LName">
<xforms:label>Last name: </xforms:label>
</xforms:input>
<hr />
<xforms:output value="concat('Hello ',Title,' ',FName,' ',LName)">
<xforms:label>Output: </xforms:label>
</xforms:output>
</body>
</html>

可以通過(guò) Firefox XForms 擴(kuò)展來(lái)查看該 XForms 表單。結(jié)果如圖 2 所示。


圖 2. 使用 Firefox XForms 擴(kuò)展查看 XForms 表單
使用 Firefox XForms 擴(kuò)展查看 XForms 表單







客戶發(fā)票

很多商業(yè)活動(dòng)中的一個(gè)老問(wèn)題是從紙質(zhì)的客戶發(fā)票系統(tǒng)遷移到計(jì)算機(jī)處理。創(chuàng)建發(fā)票結(jié)構(gòu)需要認(rèn)真考慮各種不同的類型和重復(fù)元素。

過(guò)去,發(fā)票這類商業(yè)信息的交換必須建立非常龐大的結(jié)構(gòu)和定義,國(guó)際發(fā)票信息交換標(biāo)準(zhǔn)包括數(shù)百個(gè)字段。如果沒有交換數(shù)據(jù)的有效方法,共享發(fā)票、訂單和其他數(shù)據(jù)會(huì)非常困難。

由于沒有統(tǒng)一的標(biāo)準(zhǔn),很多組織開發(fā)出了核心發(fā)票標(biāo)準(zhǔn)的各種版本。其中,OASIS 組開發(fā)的標(biāo)準(zhǔn)可能是最知名的,也是大量公司和組織認(rèn)可的一種。

這種結(jié)構(gòu)是 OASIS 開發(fā)的 更龐大的框架 Universal Business Logic(UBL)的一部分,包括多種模式和工作流,從訂單、打印發(fā)票到支付。這個(gè)系統(tǒng)非常復(fù)雜,不可能在本文中討論,不過(guò)如果需要一種靈活、互操作的系統(tǒng),UBL 是不錯(cuò)的起點(diǎn)。







結(jié)束語(yǔ)

本 文考察多種不同的 XML 模式,從簡(jiǎn)單的描述框架(RDF)到圖形格式(SVG)再到商業(yè)工作流的完整結(jié)構(gòu)(UBL)。無(wú)論哪一種,XML 結(jié)構(gòu)和內(nèi)容的靈活性都大大簡(jiǎn)化了這些系統(tǒng)的開發(fā)。此外,如果需要在不同的平臺(tái)和環(huán)境之間共享數(shù)據(jù),XML 的跨平臺(tái)兼容性使得它成為一種理想的選擇。對(duì) WSDL 和 SOAP 而言,這是最重要的特性之一。



參考資料

學(xué)習(xí)

獲得產(chǎn)品和技術(shù)
  • IBM 產(chǎn)品評(píng)估試用軟件 :使用可直接從 developerWorks 下載的 IBM 試用軟件構(gòu)建您的下一個(gè)項(xiàng)目,包括來(lái)自 DB2?、Lotus?、Rational?、Tivoli? 和 WebSphere? 的應(yīng)用程序開發(fā)工具和中間件產(chǎn)品。


討論


關(guān)于作者

Martin Brown 的照片

Martin Brown 作為一名專業(yè)作家有八年多了。他撰寫了不少書和文章,內(nèi)容涉及很多主題。他的特長(zhǎng)涉獵很多開發(fā)語(yǔ)言和平臺(tái),包括:Perl、Python、Java、 JavaScript、Basic、Pascal、Modula-2、C、C++、Rebol、Gawk、Shellscript、Windows、 Solaris、Linux、BeOS、Mac OS/X、Web 編程以及系統(tǒng)管理和集成等。Martin 是 ServerWatch.com、LinuxToday.com 和 IBM developerWorks 專欄作家,定期在 Computerworld、The Apple Blog 和其他站點(diǎn)上發(fā)表博客文章,同時(shí)也是微軟的 Subject Matter Expert(SME)。

您應(yīng)該知道的十種 XML 模式


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論