1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
<?vsp
--
-- $Id: sioc.vsp,v 1.1 2007/01/22 22:01:37 source Exp $
--
-- This file is part of the OpenLink Software Virtuoso Open-Source (VOS)
-- project.
--
-- Copyright (C) 1998-2006 OpenLink Software
--
-- This project is free software; you can redistribute it and/or modify it
-- under the terms of the GNU General Public License as published by the
-- Free Software Foundation; only version 2 of the License, dated June 1991.
--
-- This program is distributed in the hope that it will be useful, but
-- WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- General Public License for more details.
--
-- You should have received a copy of the GNU General Public License along
-- with this program; if not, write to the Free Software Foundation, Inc.,
-- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
--
--
declare url, src, xt, format, atm, xmlrdf, fname, hf any;
url := {?'URL'};
if (url = '' or isnull(url))
signal('XQS41','Parameter URL is missing.');
src := XML_URI_GET ('', url);
hf := WS.WS.PARSE_URI (url);
fname := hf[1];
fname := replace (fname, '.', '-');
if (length (fname) = 0)
fname := 'sioc';
--src := XML_URI_GET ('', TUTORIAL_XSL_DIR () || '/tutorial/xml/xq_s_4/index.rdf');
xt := xtree_doc (src, 0, '', 'UTF-8');
http_rewrite ();
if (xpath_eval ('/feed', xt) is not null)
atm := xt;
else if (xpath_eval ('/rss', xt) is not null)
{
atm := xslt (TUTORIAL_XSL_DIR () || '/tutorial/xml/xq_s_4/rss2atom.xsl', xt);
}
else if (xpath_eval ('/RDF', xt) is not null)
{
atm := xslt (TUTORIAL_XSL_DIR () || '/tutorial/xml/xq_s_4/rdf2atom.xsl', xt);
}
else
signal ('22023', 'The format of the feed is not supported');
http_header (sprintf ('Content-Type: application/rdf+xml; charset=UTF-8\r\nContent-Disposition: inline; filename="%s.rdf"\r\n', fname));
xmlrdf := xslt (TUTORIAL_XSL_DIR () || '/tutorial/xml/xq_s_4/atom2sioc.xsl', atm);
if ({?'fmt'} = 'ttl')
{
declare dict, str, ttl any;
str := string_output ();
http_value (xmlrdf, null, str);
str := string_output_string (str);
dict := DB.DBA.RDF_RDFXML_TO_DICT (str,'','tmp/');
ttl := string_output();
DB.DBA.RDF_TRIPLES_TO_TTL (dict_list_keys (dict, 1), ttl);
ttl := string_output_string (ttl);
http_header (sprintf ('Content-Type: application/rdf+n3; charset=UTF-8\r\nContent-Disposition: inline; filename="%s.ttl"\r\n', fname));
http (ttl);
}
else
http_value (xmlrdf, null);
--http_xslt (TUTORIAL_XSL_DIR () || '/tutorial/xml/xq_s_4/atom2sioc.xsl');
return;
?>
|