2016-04-16 7 views
2

XMLからデータを取得し、Turtle/N3に変換します。 最初に@prefixとnamespaceのURLを追加します。オリジナルの "<" と ">"XQueryで文字列の出力内容をエンティティに変換しないようにする方法

<?xml version="1.0" encoding="UTF-8"?> 
@prefix rdf: &lt;http://www.w3.org/1999/02/22‐rdf‐syntax‐ns#&gt; . 
@prefix : &lt;http://lyle.smu.edu/cse7347/&gt; . 
:Albania:population :3249136. 
:Andorra:population :72766. 
.. 
... 

出力は翻訳:

declare function local:genPopulation()as xs:string* { 
let $countries:=doc("mondial-3.0.xml")//country 
for $elt in $countries 
let $population := $elt/@population[1] 
let $countryName := $elt/@name 
return (concat(":",$countryName,":population :",$population,".&#xa;")) 
}; 
"&#xa;","@prefix rdf: <http://www.w3.org/1999/02/22‐rdf‐syntax‐ns#> .","&#xa;", 
"@prefix : <http://lyle.smu.edu/cse7347/> .","&#xa;", 
local:genPopulation() 

出力は次のとおりです。私は、XQueryを書く

<xxx> 
<country 
name="XX" 
population="NN"> 
... 
</country> 
... 
</xxx> 

: 元のXMLは、何かに似ています「<」および「>」に設定します。 これらの文字列を変更しないでください。

@prefix rdf: <http://www.w3.org/1999/02/22‐rdf‐syntax‐ns#> . 
@prefix : <http://lyle.smu.edu/cse7347/> . 
:Albania:population :3249136. 
... 

私は何をすべき: は、私のような出力がしたいですか? enter image description here

+3

出力はXMLとしてシリアル化されています。シリアライズオプションを追加してみてください。宣言する出力:メソッド "テキスト"; – chrisis

+0

@chrisis 'declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization"を追加します。オプション出力を宣言します:メソッド "text"; 'が冒頭にあり、動作します!ありがとうございました! – Mayoco

+0

@chrisis返信にあなたのコメントを書いて、正しく承認され、投票されるようにしてください。 – joewiz

答えて

2

出力はXMLとしてシリアル化されています。テキストとしてシリアル化するには

declare namespace output = "w3.org/2010/xslt-xquery-serialization"; 
declare output:method "text"; 
関連する問題