私がやろうとしているのは、次のようなxmlを生成するストアドプロシージャを作成することです。
<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:georss="http://www.georss.org/georss" version="2.0">
<rowset>
<row>
<title>myTitle</title>
<description>myDescription</description>
<georss:point>myLat myLon</georss:point>
</row>
...
</rowset>
</rss>
生成するものは次のとおりです
SELECT DBMS_XMLGEN.getXML(q'!
SELECT trim(sitedesc) AS "title",
'<a href="../scripts/fmiinfo.asp?file_code=_BLDGLIST&sitecode='||trim(sitecode)||'&forceDB=">'||trim(siteabbrev)||'</a>' AS "description",
trim(latitude)|| ' ' ||trim(longitude) AS "georss:point"
FROM LS
WHERE sold <> 1
!') FROM dual;
出力は次のようになります
<ROW>
<title>Tipton Facilities</title>
<description><a href="../scripts/fmiinfo.asp?file_code=_BLDGLISTnull=USINTI01null=">TIP1</a></description>
<georss:point>40.286008 -86.058054</georss:point>
</ROW>
> < & %
別のページへのリンクが必要な「説明」では、出力が予約文字をエンティティ参照に自動的に変換するように見えるように、xmlに特定の予約文字があることを理解しています。
ただし、問題は、プログラムが変数であると見なしsitecode
、forcedb
そうでない場合はURLに変数が含まれ、結果から削除されることです。
URLは次のようになります。<a href="../scripts/fmiinfo.asp?file_code=_BLDGLIST&sitecode=USINTI01&forceDB=">
しかし、それは<a href="../scripts/fmiinfo.asp?file_code=_BLDGLISTnull=USINTI01null=">
ctr()
目的の出力を取得するには、関数付きのURLを入力する必要がありますか?
SET SCAN OFF
私の変数の質問を修正します。
以下のコメントに従ってサンプルコードを更新します。
SELECT XMLELEMENT("rss", XMLATTRIBUTES('http://www.georss.org/georss' AS "xmlns:georss"),
XMLELEMENT("channel",
XMLAGG(XMLELEMENT("item",
XMLFOREST(title AS "title",
description AS "description",
point AS "georss:point"))))).EXTRACT('/*')
FROM (SELECT trim(longitude) || ' ' || trim(latitude) AS point,
'../scripts/fmiinfo.asp?file_code=_BLDGLIST&sitecode='||trim(sitecode)||'&forceDB=">'||trim(siteabbrev)||'</a>' AS description,
trim(sitedesc) AS title
FROM ls
WHERE sold <>1
);