<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    精彩的人生

    好好工作,好好生活

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      147 Posts :: 0 Stories :: 250 Comments :: 0 Trackbacks
    作者:Brian McBride
    發表時間:2000年9月2日
    原文鏈接: http://www.hpl.hp.co.uk/people/bwm/rdf/jena/rssinjena.htm
    譯者:dlee
    翻譯時間:2001年5月26日

    ? ? RSS 1.0 是最近宣布的一個格式,順從于 W3C 的 RDF (資源定義框架),用來分發(distributing) 站點摘要 (site summary) 和企業聯合 (syndication) 元數據。一個站點摘要文檔的例子可以在規范中找到。Jena 是一套實驗性的用來處理 RDF 的 Java API。這篇筆記描述了一個應用程序使用 Jena 來將一個站點摘要文檔翻譯成 HTML。整個程序的源代碼作為 RenderToHTML 可以在 Jena 發布的例子包里得到。

    ? ? 這篇文章和例子代碼基于 RSS 規范候選發布版本1 (Release Candidate 1 version)。
    ? ? 這個應用程序以創建一個 RDF 模型開始,實際上在內存中是一個 RDF statement 的集合。然后解析站點摘要文檔,使用一個 RDF 解析器,并加載 statement 到新創建的模型中。

    ? ? ? Model model = new ModelMem();
    ? ? ? model.read(" http://www.xml.com/xml/news.rss");

    ? ? 在寫出一個樣板 HTML 頭后,程序列出和處理在輸入流中的每個 channel。在 RDF 術語中,channel 是具有一個 rdf:type 屬性的 rss:channel 的資源。我們使用 Jena API 來列出具有一個有這個值的 rdf:type 屬性的所有的資源。在下面的代碼中,假設輸出是一個接收 HTML 輸出的 PrintWriter。

    ? ? ? ResIterator channels =? model.listSubjectsWithProperty(RDF.type, RSS.channel);
    ? ? ? while (channels.hasNext()) {
    ? ? ? ? ? renderChannel(channels.next(), out);
    ? ? ? }

    ? ? 為了呈現 (render) 一個 channel,程序首先寫出它的 title,description 和相關的 image 和 textinput 字段 (如果有的話)。getProperty 方法用來得到 channel 的 title,link 和 description 屬性,隨后這些可以被呈現為 HTML。

    ? ? ? void renderChannel(Resource channel, PrintStream out)
    ? ? ? ? ? ? ?throws RDFException {
    ? ? ? ? ? String url = null;
    ? ? ? ? ? String title = null;
    ? ? ? ? ? String desc = null;

    ? ? ? ? ? url = channel.getProperty(RSS.link).getString();
    ? ? ? ? ? title = channel.getProperty(RSS.title).getString();
    ? ? ? ? ? desc = channel.getProperty(RSS.description).getString();

    ? ? 一個 channel 可以有一個相關聯的 image 和 textinput,測試是否存在這些屬性和是否需要調用合適的方法來呈現它們是很簡單的。

    ? ? ? if (channel.hasProperty(RSS.image)) {
    ????? ? ? renderImage(channel.getProperty(RSS.image) .getResource(), out);
    ????? }
    ????? if (channel.hasProperty(RSS.textinput)) {
    ????? ? ? renderImage(channel.getProperty(RSS.textinput) .getResource(), out);
    ????? }

    ? ? 為了處理一個 image,同樣的調用被用來確定 image 的屬性。

    ????? String url = null;
    ????? String title = null;

    ????? // does the image have a link?
    ????? if (image.hasProperty(RSS.link)) {
    ????? ??? url = image.getProperty(RSS.link).getString();
    ????? }

    ????? // does the image have a title?
    ????? if (image.hasProperty(RSS.title)) {
    ????????? title = image.getProperty(RSS.title).getString();
    ????? } image.getProperty(SSF.title).getString();

    ? ? 然后這個 image 可以被呈現成為 output stream。textinput 以 相似的方法處理。

    ? ? channel 有一個 items 屬性,它的值為一個 RDF sequence。因此使用 getProperty 方法得到這個 sequence 就很簡單的了。然后迭代每一個元素以呈現它。

    ????? if (channel.hasProperty(RSS.items)) {
    ????? ??? Seq items = channel.getProperty(RSS.items).getSeq();
    ????? ??? for (int i=1; i<= items.size(); i++) {
    ????? ??? ? ? renderItem(items.getResource(i), out);
    ????? ??? }
    ????? }

    ? ? 以相同的模式呈現每一個 items。首先得到需要呈現的 items 的屬性,然后寫出 HTML。

    ????? void renderItem(Resource item, PrintWriter out) {
    ????? ??? String url = item.getProperty(RSS.link).getString();
    ????? ??? String title = item.getProperty(RSS.title).getString();
    ????? ??? String desc = item.getProperty(RSS.description) .getString();
    ????? ??? ...
    ????? }

    ? ? 使用 Jena 來處理 RSS 1.0 流是簡單和直接的。

    ? ? Brian McBride
    ? ? HP實驗室,2000年9月2日
    ? ? 修改于2000年12月2日
    posted on 2006-07-20 10:36 hopeshared 閱讀(624) 評論(0)  編輯  收藏 所屬分類: Web Service
    主站蜘蛛池模板: 国产精品亚洲专区无码牛牛| 亚洲黄色免费电影| 小说专区亚洲春色校园| 午夜男人一级毛片免费| 亚洲熟妇无码八V在线播放| av免费不卡国产观看| 亚洲视频无码高清在线| 四虎永久在线精品免费网址 | 国产高清免费的视频| 亚洲欧美国产国产一区二区三区 | 69成人免费视频| 一本色道久久88亚洲精品综合| 色妞WWW精品免费视频| 亚洲av乱码中文一区二区三区| 免费一级毛片清高播放| aa毛片免费全部播放完整| 亚洲AV日韩AV高潮无码专区| 最近中文字幕大全免费视频| 中文字幕亚洲男人的天堂网络 | 日韩免费a级在线观看| 一级毛片不卡免费看老司机| 国精无码欧精品亚洲一区| 巨波霸乳在线永久免费视频| 亚洲乱亚洲乱妇24p| 精品亚洲一区二区三区在线播放| 精品成人免费自拍视频| 久久精品国产亚洲av麻豆蜜芽| 蜜桃精品免费久久久久影院| 国产精品午夜免费观看网站| 久久亚洲AV成人出白浆无码国产| 国产又黄又爽又猛免费app| 国产亚洲成在线播放va| 亚洲AV无码成人精品区在线观看| 黄色网址免费观看| 日韩亚洲人成网站| 亚洲综合一区二区精品导航| 最好免费观看韩国+日本| a级精品九九九大片免费看| 亚洲日本乱码卡2卡3卡新区| 久久精品夜色噜噜亚洲A∨| 毛片免费全部播放无码|