簡體   English   中英

如何使用javascript中的模板生成RDF / XML?

[英]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服務器上運行的小部件。 我不認為服務器端代碼是一種選擇。

我建議使用:

  1. jQuery模板
  2. 胡子
  3. 約翰·雷格(John Resig)的微型模板

jQuery模板非常強大,可以很好地與jQuery集成。 這意味着您可以執行以下操作:

$.tmpl("Hello ${n}", {n: "World"}).appendTo('h1');

以獲取最簡單的內容,或者在HTML中的模板中使用自定義MIME類型在特殊的腳本標簽中進行定義,對其進行編譯,使用來自AJAX調用的JSON數據進行填充等。

為了補充一些后續信息,我實現了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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM