Я совершенно новый в использовании XSLT.Преобразование XML-файла в RDF с пустыми узлами
Я пишу преобразование XSL из документа XML (метаданных) в XML/RDF, и я также улучшаю модель, лежащую в основе исходного документа. В конкретных, исходный документ описывает человека, и в какой-то момент в нем перечислены все имена данного лица:
<?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 с соответствующим пустым узлом; однако я не могу найти решение для создания идентификатора пустого узла (который я бы сделал внутри цикла xsl: for-each, который проходит через все имена человека), который затем я могу вызвать вне цикла и обратиться к нему.
Интуитивно я создавал бы идентификатор id_IDID для каждого из этих элементов, а затем вне цикла (и вне поддерева) я бы добавил соответствующие тройки. Результатом будет что-то вроде:
<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>
Я действительно не знаю, какие функции/конструкции я мог бы использовать ... есть кто-то, кто может помочь?
Ваш вопрос непонятен: каков требуемый результат вашего примера (если предположить, что вы отправили ввод)? –
Извините, я нажал кнопку «пост», прежде чем делать редактирование! Является ли это достаточно ясным? – klaraspina
Извините, нет. Я не знаю, что вы подразумеваете под «тройками» или «пустым узлом». –