讀者或許熟悉Apache軟件基金和它的各種相關的項目。下面,我們討論Xalan-java XSLT處理器和關于它分割功能的應用。
xml數據有各種各樣的格式。然而,XML文檔中的數據格式不一定符合目標系統的規范。XMLT模板常被采用來把一種格式轉換為另一種格式。不幸的是,XSLT的方法僅僅提供一套有限的功能執行這些轉換。
Apache軟件基金的Xalan項目包括Java和C++兩種版本的XSLT處理器。這個處理器提供解析XML文檔的功能,并使用XSLT模板來轉換它們。除了標準的XSLT轉換以外,Xalan也提供一把擴展方法。在擴展庫提供的這些方法中,有一個字符串tokenizer把字符串分割成一組token。
問題領域
精確的一組XML轉換用tokenize方法。任何時候,當你需要把字符串以一致的樣式分解為子串,可以采用tokenize方法。實際上,tokenize方法是一個XSLT方法,它帶兩個參數。第一個參數指定要被分割的字符串。第二個參數指定把字符串分解為一組字符串token的分隔符。
tokenize方法的結果是一組表示token的節點。這些token和節點可以使用iterator或者作為單個值來處理。你可以用tokenizer把字符串分解為一組單個值,從一個長字符串獲取單個token。
例子
為了舉例說明tokenize方法的用法,我們看一個使用它的例子。下面是包含需要我們分割的字符串的一個XML文檔:
<CustomerAddress>
<Address1>9399 W Higgins Street</Address1>
<Address2>Rosemont, IL 60018</Address2>
</CustomerAddress>
這個例子演示了系統的一個客戶地址記錄,包含兩行地址。這是在系統中一個相當普遍的情形,地址信息僅當發郵件時使用,而實際的城市、州和郵編信息并不非凡重要。不幸的是,許多系統希望地址信息被分成城市、州和郵編。需要一個機制把組合的<Address2>元素分成單獨的城市、州和郵編元素。
方案
為了把數據以恰當的格式提供給目標系統,我使用Xalan的tokenize擴展功能。這個方法基于一組分割符把一個字符串,比如像地址,分割成多個token。假如沒有指定分割符,使用默認的空格符號作為分割符。在我們的例子中,使用的分割符包括空格符號和逗號。
新聞熱點
疑難解答