Web開發框架中的架構模式比較(三) (轉)
T)
頁面內容和表現風格分離的第一步,是CSS風格和HTML頁面的分離,但是,HTML的頁面內容和顯示元素還是緊緊捆綁在一起。推廣之後,XSLT也大行其道,大量地應用在釋出中。和 web都在朝這個方向走,只是java web框架走得更快,更遠。下面進行說明。
在處理XSLT時,SAX介面要比介面快得多,而且幾乎不佔據空間。令人不安的是,.Net框架到現在還沒有提供SAX介面。提供了一套MSXML SDK,其中包含了基於COM的SAX實現,並提供了在VB和VC中應用的例項。MSXML SAX的VC用例中,需要包含標頭檔案msxml2.h。這就是說,.Net框架無法以一種自然的方式MSXML SAX。還有,.Net框架的XSLT是如何實現的,即,System.Xml.Xsl.XslTranorm是用什麼方式實現的,是呼叫SAX介面,還是DOM介面。如何使用.Net框架組成一條XSLT的處理管道?我也找不到方法。也沒有發現這方面的例子。
Xerce專案支援XML處理,提供Java和C++版本,並提供了呼叫MSXML的封裝;Apache Xalan專案支援XSLT處理;Apache Cocoon2.0,使用SAX介面,組成XSLT的處理管道。
Apache Xalan專案的一個例子檔案UseXMLFilters.java
UseXMLFilters.java。(節錄,檔案頭部分省略)
microsoft-com::office" />
public class UseXMLFilters
{
public static void main(String[] args)
throws TransformerException, TransformerConfigurationException,
SAXException, IOException
{
// Instantiate a TransformerFactory.
TransformerFactory tFactory = TransformerFactory.newInstance();
// Detene whether the TransformerFactory supports The use uf SAX
// and SAXResult
if (tFactory.getFeature(SAXSource.FEATURE) && tFactory.getFeature(SAXResult.FEATURE))
{
// Cast the TransformerFactory to SAXTransformerFactory.
SAXTransformerFactory saxTFactory = ((SAXTransformerFactory) tFactory);
// Create an XMLFilter for each stylesheet.
XMLFilter xmlFilter1 = saxTFactory.newXMLFilter(new StreamSource("foo1.xsl"));
XMLFilter xmlFilter2 = saxTFactory.newXMLFilter(new StreamSource("foo2.xsl"));
XMLFilter xmlFilter3 = saxTFactory.newXMLFilter(new StreamSource("foo3.xsl"));
// Create an XMLReader.
XMLReader reader = XMLReaderFactory.createXMLReader();
// xmlFilter1 uses the XMLReader as its reader.
xmlFilter1.setParent(reader);
// xmlFilter2 uses xmlFilter1 as its reader.
xmlFilter2.setParent(xmlFilter1);
// xmlFilter3 uses xmlFilter2 as its reader.
xmlFilter3.setParent(xmlFilter2);
// xmlFilter3 outputs SAX events to the serializer.
Serializer serializer = SerializerFactory.getSerializer
(OutputProperties.getDefaultMethodProperties("xml"));
serializer.setOutputStream(System.out);
xmlFilter3.setContentHandler(serializer.antentHandler());
// Perfothe series of transformations as follows:
// - transformer3 gets its parent (transformer2) as the XMLReader/XMLFilter
// and calls transformer2.parse(new InputSource("foo.xml")).
// - transformer2 gets its parent (transformer1) as the XMLReader/XMLFilter
// and calls transformer1.parse(new InputSource("foo.xml")).
// - transformer1 gets its parent (reader, a SAXParser) as the XMLReader
// and calls reader.parse(new InputSource("foo.xml")).
// - reader parses the XML document and sends the SAX parse events to transformer1,
// which performs transformation 1 and sends the output to transformer2.
// - transformer2 parses the transformation 1 output, performs transformation 2, and
// sends the output to transformer3.
// - transformer3 parses the transformation 2 output, performs transformation 3,
// and sends the output to the serializer.
xmlFilter3.parse(new InputSource("foo.xml"));
}
}
}
Apache Cocoon專案的一個檔案例子sitemap.xmap
Apache Cocoon專案的sitemap.xmap定義了XSLT處理管道。見下例中的
/sample/tutorial/sitemap.xmap (節錄,無關部分省略)
…
...
...
的Xml Web例子
下面的示例從.Net框架文當中摘錄,說明如何使用 Xml 控制元件透過示例 XSL 轉換檔案來顯示示例 XML 檔案。示例 XML 檔名為 People.xml,示例 XSL 轉換檔名為 Peopletable. xsl。可以看到,asp:Xml控間只能進行一步XSLT轉換。
Xml Example
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993462/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Web開發框架中的架構模式比較(一) (轉)Web框架架構模式
- Web開發框架中的架構模式比較(五) (轉)Web框架架構模式
- Web開發框架中的架構模式比較(四) (轉)Web框架架構模式
- Web開發框架比較Web框架
- Web 框架的架構模式探討Web框架架構模式
- Web3架構與傳統Web的比較 - thenewstackWeb架構
- APP開發模式比較APP模式
- Go語言的Web框架比較GoWeb框架
- Spring的web MVC 構架模式 (轉)SpringWebMVC模式
- 轉享:表現層架構模式比較:MVP(SC),MVP(PV),PM,MVVM 和 MVC架構模式MVPMVVMMVC
- 企業應用開發架構談(三) (轉)架構
- 構架Java併發模型框架 (轉)Java模型框架
- iOS開發-MVP架構模式iOSMVP架構模式
- 三種主流WEB架構的開發現狀與未來展望Web架構
- Transformer和MoE架構比較ORM架構
- 自己編寫Java Web框架:Takes框架的Web App架構JavaWeb框架APP架構
- python網站開發哪些框架比較好用?Python網站框架
- B/S和C/S架構的比較架構
- 乾淨架構在 Web 服務開發中的實踐架構Web
- 三種工廠模式的優劣比較模式
- DDD CQRS架構和傳統架構的優缺點比較架構
- web前端的開發規範比較重要的知識點Web前端
- 【轉載】webservice框架xfire和axis的比較Web框架
- Memcached 及 Redis 架構分析和比較Redis架構
- 各區塊鏈架構的橫向比較區塊鏈架構
- 三個最火的Python Web開發框架PythonWeb框架
- EDP .Net開發框架--組織架構框架架構
- iOS 開發(三) MVVM 架構篇iOSMVVM架構
- 兩個Python web框架:Django & Tornado比較PythonWeb框架Django
- 三大最棒的開源Web開發模板或框架Web框架
- PPT 分享:《10 個 Go Web 開發框架對比》GoWeb框架
- WebSphere5.0開發EJB,工具比較篇 (轉)Web
- 大型網站技術架構(三)--架構模式網站架構模式
- (轉)ORACLE 中IN和EXISTS比較Oracle
- 常用的Java開發工具比較Java
- .NET 的 WebSocket 開發包比較Web
- 全Javascript的Web開發架構:MEAN和YeomanJavaScriptWeb架構
- 業務開發轉基礎開發,這三種「高可用」架構你會麼?架構