![](/img/trans.png)
[英]how to parse RDF/XML using rdflib.js or rdf-parser-rdfxml in Node.js
[英]How to generate RDF/XML using a template in javascript?
我有一些有效的Javascript代碼,它們使用從HTML字段中選取的變量來生成RDF / XML文檔:
...
peopleDoap += " <foaf:name>" + person_name + "</foaf:name>\n";
if (person_url != "") {
peopleDoap += " <foaf:homepage rdf:resource=\"" + person_url + "/\"/>\n";
}
if (person_pic != "") {
peopleDoap += " <foaf:depiction rdf:resource=\"" + person_pic + "/\"/>\n";
}
...
很難看清這段代碼,以了解輸出的外觀(尤其是這段代碼分散在子函數等中)。
我想知道是否有一種簡單的方法可以使我擁有這樣的東西:
...
<foaf:name>%person_name%</foaf_name>
<foaf:homepage rdf:resource="%person_url%"/>
<foaf:depiction rdf:resource="%person_pic%"/>
...
然后是一些替換代碼。 一個小的復雜之處是,如果將字段留空,我將不希望生成整個元素。 即,如果person_url ='',則上面的代碼應生成為:
...
<foaf:name>%person_name%</foaf_name>
<foaf:depiction rdf:resource="%person_pic%"/>
...
我想我可以通過將模板定義為一個巨大的字符串,然后對它執行一堆替換來相當天真地做到這一點,但是還有什么更優雅的方法嗎? 對本機Javascript而非庫的偏愛,但很高興被說服...
(順便說一句,是的,因為這是RDF / XML,所以使用某種RDF庫可能是一種更聰明的方法。如果您想解決問題,那我也可以。)
代碼在這里 。
另外,這是在Jetty服務器上運行的小部件。 我不認為服務器端代碼是一種選擇。
為了補充一些后續信息,我實現了John Resig的Micro-Templating(實際上是我之前發布的改進版本)。 但是,我隨后退縮了一點。 我發現在模板中實現控制結構比在外部更不易讀:
...
'<description xml:lang="en">@description</description>';
if (homepage) t +=
'<homepage rdf:resource="@homepage"/>';
...
而不是:
...
'<description xml:lang="en"><#= description #></description>' +
'<# if (homepage) { #>' +
'<homepage rdf:resource="<#= homepage =>"/>' +
'<# } #>';
...
我還放棄了微模板代碼,使用@var而不是<#var#>來簡單地替換變量。
這樣的模板的可讀性非常關鍵,因此我做了我能想到的一切。 特別是,將javascript保留在模板之外可以使語法突出顯示起作用,這對我來說很有價值。
John Resig的帖子還建議將模板埋入HTML中,但我更喜歡將其保留在我的JavaScript中,這是一個單獨的.js。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.