我对使用 XSLT 很陌生。
我正在编写从 XML(元数据)文档到 XML/RDF 的 XSL 转换,并且我还在改进原始文档的模型。具体来说,原始文档描述了一个人,并在某些时候列出了该人的所有姓名:
<?xml version="1.0" encoding="UTF-8"?>
<Person RecordID="abcd">
<PersonNames>
<PersonName>
<Surname>Doe</Surname>
<FirstName>John</FirstName>
</PersonName>
<PersonName>
<Surname>Doe</Surname>
<FirstName>Janine</FirstName>
</PersonName>
<PersonName>
<Surname>Smith</Surname>
<FirstName>Janine</FirstName>
</PersonName>
</PersonNames>
</Person>
我不想将这个人的 URI 分别连接到这些项目中的每一个,因为这样做不清楚“乔·史密斯”从来不是这个人的名字。我宁愿为每个名字使用一个空白节点,然后将 FirstName 和 Surname 链接到相应的空白节点;但是,我找不到生成空白节点 ID 的解决方案(我会在 xsl:for-each 循环中执行,该循环会遍历所有人的姓名),然后我可以在循环外调用并引用它。
直观地说,我将为这些元素中的每一个创建一个 id personNameID,然后,在循环之外(和子树之外),我将添加相应的三元组。结果将是这样的:
<rdf:RDF 'namespaces'>
<localontology:Person>
... person's metadata ...
<foaf:name rdf:nodeID="name1">
<foaf:name rdf:nodeID="name2">
....
</localontology:Person>
<rdf:Description rdf:nodeID="name1">
<localontology:firstName 'FirstName in name1'>
<localontology:surname 'Surname in name1'>
</rdf:Description>
<rdf:Description rdf:nodeID="name1">
<localontology:firstName 'FirstName in name2'>
<localontology:surname 'Surname in name2'>
</rdf:Description>
我真的不知道我可以使用哪些函数/结构......有人可以帮忙吗?