![](/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.