六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

通過XSLT訪問Java代碼[轉]

[摘要]假如你希望將XML數據轉換為固定寬度和純文本的字符串——這剛好是XSLT不太方便實現的一個特性,或者,也許你希望在XML文件中執行詞語替換。在這些情況下,當你的事務超出了XSLT自身的處理能力時,可以通過在你的XSLT處理器中調用Java函數來完成。我看到過利用類似VBScript和Jscript...
假如你希望將XML數據轉換為固定寬度和純文本的字符串——這剛好是XSLT不太方便實現的一個特性,或者,也許你希望在XML文件中執行詞語替換。在這些情況下,當你的事務超出了XSLT自身的處理能力時,可以通過在你的XSLT處理器中調用Java函數來完成。
我看到過利用類似VBScript和Jscript的腳本語言完成特殊處理的例子(針對微軟解析器的),但是如何利用Java來執行特殊的處理還不是特別地明顯。盡管如此,簡單地說,可以在XSLT處理器中通過XML命名空間(namespaces)調用Java函數來實現。Java與XSLT的結合為構建健壯的應用程序提供了強有力的方法。
使用定制的命名空間\r
命名空間是通過使用統一資源標識符(URI)來修飾限定XSL中元素和屬性名稱的一種方法。例如,常見的XSL元素需要有xsl命名空間前綴來修飾,xsl通過使用XSLT命名空間URI來聲明:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
但是并不局限于使用XSLT命名空間,你完全可以自由地聲明你自己定制的命名空間,并用它們來識別定制的XSLT標簽和范圍。
你必須使用定制的命名空間前綴來完成對外部函數的調用,例如,mynspace:fundtion(),該命名空間前綴mynspace,必須與一個命名空間URI相關聯,例如:
xmlns:myspace="d:///XMLprogs/mynamespace"
一般的Java綁定使用命名空間URI標識Java類函數的位置。對用于本文示例代碼的Xalan XSLT處理器(版本1.2.2)來說,命名空間URI必須具有URI-stem/packagename的形式。如果你使用了XT,那么你的命名空間應該有如下格式:
xmlns:mynspace="d://XMLprogs/mynamespace.myclassname
這種情況下,你可以使用XSLT代碼調用來自myclassname的Java函數。
綁定外部Java函數
此處給出在XSLT模板內部綁定Java語言編寫的外部函數的過程。
將你自己定制的命名空間作為它們的屬性添加到樣式表(stylesheet)元素或者你的模板中。
確保你的Java類文件所在目錄位于你的XSLT處理器所運行的Java虛擬機(JVM)的CLASSPATH中。
對于靜態方法,可以使可以用完全合格的類名稱加上方法和任何必需的的參數,當然還有命名空間前綴。
對于非靜態方法,首先創建類實例,然后調用該方法并提供任何必需的參數。
例如,下面的樣式表元素包含一個定制的命名空間聲明:

<?xml version=”1.0” encoding=”UTF-8”?><xsl:stylesheet version=”1.0” xmlns:xsl=”http://www.w3.org/1999/XSL/Transform” xmlns:myspace=”d://XMLprogs/mynamespace”>

在聲明了這個命名空間后,可以訪問該類的任何靜態方法,像這樣:

<xsl:variable name=”funvalue”select=”mynspace:classname.function()”/>

如果方法不是靜態的,那么必須首先調用類構造器,例如:

<xsl:variable name="funvalue" select="mynspace.classname.new()"/><?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="d://XMLprogs/mynamespace" exclude-result-prefixes="java">

Java包\"mynamespace"必須位于"d://XMLprogs"目錄中。
注意:使用可選屬性xsl:exclude-result-prefixes,預防了java命名空間被包括到結果文檔中。

<xsl:template match="/"><html><body><p><xsl:value-of select="java:DateClass.displayDate()"/></p></body></html></xsl:template>

上面的XSLT代碼中,<xsl:value-of select="java:DateClass.displayDate()"/>行調用位于mynamespace包中名為DateClass的類的靜態方法displayDate()。
利用這種技術,你可以調用任何Java類方法——包括那些需要參數的方法——參數來自于你的XSLT模板。
本文涉及的代碼:date.xsl

<?xml version="1.0" encoding="UTF-8" ?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:java="d://XMLprogs/mynamespace" exclude-result-prefixes="java"><xsl:template match="/"><html><body><p><xsl:value-ofselect="java:DateClass.displayDate()" /></p></body></html></xsl:template></xsl:stylesheet>DateClass.javapackagemynamespace;importjava.util.Date;public class DateClass{public static String displayDate(){Date d = new Date();returnd.toString();}}

要運行這些代碼,需要:
創建文件夾"d:XMLProgsmynamespace"。
將DateClass.java文件放入上述路徑并編譯得到DateClass.class文件。
將"d:XMLProgsmynamespace"放入classpath變量中。
利用XSLT處理器,例如XT或XALAN將該XSL文件和具體的XML文件關聯。


主站蜘蛛池模板: 欧美一级特黄刺激大片视频 | 午夜在线免费观看视频 | 亚洲婷婷综合中文字幕第一页 | 欧美一级视频在线高清观看 | 亚洲国产天堂久久综合226 | 日韩专区亚洲国产精品 | 一级做a爰片久久毛片美女图片 | 最新亚洲情黄在线网站无广告 | 青娱乐精品视频 | 日本欧美色 | 色婷婷视频在线 | 日本乱码一卡二卡三卡永久 | 亚洲国产精品久久卡一 | 亚洲第成色999久久网站 | 亚洲αv| 四虎永久在线精品视频播放 | 日本视频播放免费线上观看 | 香港三级理论在线影院 | 日韩a| 欧美整片在线 | 窝窝午夜色视频国产精品东北 | 青草社区在线 | 日韩亚洲制服丝袜中文字幕 | 天天做日日爱 | 青草视频app| 一级毛片免费的 | 亚洲视频在线观看免费视频 | 亚洲激情另类小说 | 日日摸夜夜添夜夜添特色大片 | 欧洲精品视频完整版在线 | 最近免费的中文字幕一 | 亚洲日韩中文字幕在线播放 | 视频在线观看h | 色综合色综合色综合 | 色好看在线视频播放 | 亚洲精品网站日本xxxxxxx | 中文日韩字幕一区在线观看 | 午夜免费体验 | 在线看污视频 | 羞羞色院91网站 | 日本不卡在线一区二区三区视频 |