<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
    主站蜘蛛池模板: 亚洲第一成年人网站| 亚洲综合精品一二三区在线| 亚洲熟女综合色一区二区三区| 毛片无码免费无码播放| 亚洲av日韩综合一区在线观看| a视频在线观看免费| 伊人久久大香线蕉亚洲| 丝袜捆绑调教视频免费区| 国产精品亚洲高清一区二区| 人成电影网在线观看免费| 不卡一卡二卡三亚洲| a级毛片在线免费看| 亚洲国产国产综合一区首页| 无码国产精品一区二区免费16| 亚洲精品视频在线观看免费| 91精品视频免费| 亚洲av无码专区国产不乱码| 日本免费观看网站| 一级做a爰片性色毛片免费网站 | 四虎国产精品永久免费网址| 亚洲制服中文字幕第一区| 84pao国产成视频免费播放| 亚洲国产日韩女人aaaaaa毛片在线 | 日韩久久无码免费毛片软件| 亚洲 综合 国产 欧洲 丝袜| a级毛片视频免费观看| 亚洲酒色1314狠狠做| 成年性生交大片免费看| 免费大片av手机看片| 亚洲国产另类久久久精品黑人| 亚洲免费在线视频| 日韩欧美亚洲中文乱码| 亚洲综合AV在线在线播放| 91av视频免费在线观看| 亚洲色偷偷综合亚洲av78| 亚洲午夜成人精品电影在线观看| 久久香蕉国产线看免费| 亚洲最大天堂无码精品区| 亚洲综合在线另类色区奇米| 美女视频黄的全免费视频| 日本在线观看免费高清|