麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Xalan-Java XSLT處理器及其分割功能

2019-11-18 13:16:34
字體:
來源:轉載
供稿:網友

  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。假如沒有指定分割符,使用默認的空格符號作為分割符。在我們的例子中,使用的分割符包括空格符號和逗號。
  
  我們從XSLT模板創建表格開始。下面是我們期待的經過轉換得來的輸出:
  
  <CustomerAddress>
  <Address>9399 W Higgins Street</Address>
  <City>Rosemont</City>
  <State>IL</State>
  <Zip>60018</Zip>
  </CustomerAddress>
  正當你看到的那樣,我們想把<Address1>元素轉換成<Address>元素,并把<Address2>元素分割成<City>、<State>和<Zip>元素。為使用tokenize方法,我們如下創建一個模板來調用它:
  
  <?xml version="1.0" encoding="UTF-8"?>
  <xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xalan="http://xml.apache.org/xalan">
  <xsl:template match="/">
  <xsl:for-each select="http://CustomerAddress">
  <Address><xsl:value-of select="Address1"/></Address>
  <City><xsl:value-of select="xalan:tokenize(Address2, ' ,')[1]"/></City>
  <State><xsl:value-of select="xalan:tokenize(Address2, ' ,')[2]"/></State>
  <Zip><xsl:value-of select="xalan:tokenize(Address2, ' ,')[3]"/></Zip>
  </xsl:for-each>
  </xsl:template>
  </xsl:stylesheet>
  
  有兩個地方需要非凡注重。第一個在<xsl:stylesheet>元素里面。這里,我們定義了xalan名字空間。這個很重要,因為tokenize方法是xalan名字空間的一部分。假如沒有恰當的名字空間定義,處理器不會知道xalan名字空間。
  
  第二需要注重的是一組叫City, State和Zip的元素。對每一個這些元素,我們調用tokenize方法。tokenize方法總是返回一個nodeset。為了給這些元素提供單個值,必須給nodeset的單個節點賦值。為了做到這一點,我們給tokenize調用的前面添加一個索引(即,[1],[2],[3])。
  這些索引指示出取出哪個token。City是地一個token,State是第二個token,Zip是第三個。
  
  tokenize方法自身帶有兩個參數。第一個參數是我們分割的值(這個例子中是<Address2>元素)。第二個參數是分隔符列表。我們使用包含在字符串‘ ,’——包含一個空格符號和一個逗號中的分隔符分割這個字符串。
  
  在XML轉換中分割字符串很普遍。為了無縫的處理這個問題,Apache XML項目和Xalan組已經添加了一個叫做tokenize的擴展方法來處理XML數據值的分割。訪問Xalan網頁,可以發現更多關于Xalan-Java XSLT處理器和tokenize方法的信息。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日日狠狠久久偷偷四色综合免费 | 国产毛片毛片毛片 | 国产精品1区,2区,3区 | 欧美亚洲综合网 | 91看片在线观看视频 | 久久久久久亚洲综合影院红桃 | 久久精品一二三区白丝高潮 | 一级一片免费 | 中文日产幕无线码6区免费版 | 懂色av懂色aⅴ精彩av | 一级免费黄视频 | 日产精品久久久一区二区福利 | 国产女厕一区二区三区在线视 | 国产美女的小嫩bbb图片 | 狠狠操操 | 黄色aaa视频 | av电影在线网站 | 九九热视频免费观看 | 中文字幕偷拍 | 欧美综合日韩 | 色日本视频 | a视频在线看| 猫咪av在线| 午夜精品久久久久久中宇 | 草妞视频 | 3344永久免费 | 视频一区二区中文字幕 | 亚洲视频黄 | 在线成人免费网站 | 国产精品视频不卡 | 免费观看国产视频 | 国产88久久久国产精品免费二区 | 九色com | 成人性视频免费网站下载软件 | 国产电影av在线 | 老女人碰碰在线碰碰视频 | 91精品国产91久久久久久丝袜 | 娇妻被各种姿势c到高潮小说 | 亚洲精品成人久久久 | 免费男女视频 | 午夜免费一区 |