Я хочу создать xslt-преобразование, которое преобразует структурный атрибут в однозначную строку и предпочтительно является универсальным, поэтому нет ссылки на именованные элементы из входных данных.
Пример ввода:
<attr attr-name="items">
<value type="structured">
<component name="studentnummer">001001</component>
<component name="achternaam">Bimans</component>
<component name="voorletters">L./component>
<component name="roepnaam">Leo</component>
<component name="geboortedatum">09-08-1986</component>
<component name="geslacht">V</component>
<component name="mobiel_telefoonnummer">0612345678</component>
<component name="voertaal_nl">Nederlands</component>
<component name="voertaal_en">Dutch</component>
<component name="extern_emailadres">L.Bimans@domain.nl</component>
</value>
<value type="structured">
<component name="studentnummer">001002</component>
<component name="achternaam">Boels</component>
<component name="voorletters">F.</component>
<component name="roepnaam">Felix</component>
<component name="geboortedatum">04-02-1993</component>
<component name="geslacht">M</component>
<component name="voertaal_nl">Nederlands</component>
<component name="voertaal_en">Dutch</component>
</value>
</attr>
Должен быть переведен на:
<attr attr-name="items">
<value type="string">#studentnummer#001001#achternaam#Bimans#voorletters#L.#roepnaam#Leo#geboortedatum#09-08-1986#geslacht#V#mobiel_telefoonnummer#0612345678#voertaal_nl#Nederlands#voertaal_en#Dutch#extern_emailadres#L.Bimans@domain.nl></value>
<value type="string">#studentnummer#001002#achternaam#Boels#voorletters#F.#roepnaam#Felix#geboortedatum#04-02-1993#geslacht#M#voertaal_nl#Nederlands#voertaal_en#Dutch</value>
<attr>
Другой пример:
<attr attr-name="links">
<value type="structured">
<component name="rel">self</component>
<component name="href">http://192.83.206.98:9999/rds/basis/studenten/</component>
</value>
<value type="structured">
<component name="rel">edit</component>
<component name="href">http://192.83.206.98:9999/rds/basis/studenten/</component>
</value>
<value type="structured">
<component name="rel">describedby</component>
<component name="href">http://192.83.206.98:9999/rds/metadata-catalog/basis/studenten/</component>
</value>
</attr>
Должен быть переведен на:
<attr attr-name="links">
<value type="string">#rel#self#href#http://192.83.206.98:9999/rds/basis/studenten/</value>
<value type="string">#rel#edit#href#http://192.83.206.98:9999/rds/basis/studenten/</value>
<value type="string">#rel#describedby#href#http://192.83.206.98:9999/rds/metadata-catalog/basis/studenten/</value>
</attr>
Преобразование должно быть как можно более общим. Другими словами, один и тот же код может использоваться для обоих типов входных данных (если это возможно). Так что никаких ссылок на имена атрибутов, значения или что бы то ни было. Обратите внимание, что имя компонента (из структурного) должно (предпочтительно) быть включено в результирующую строку (как показывают примеры), и после него должно следовать фактическое значение (все разделены символом-разделителем #).
Я пытался сделать это, но пока не получалось.
Также обратите внимание, что я могу использовать только xslt 1.0!
Спасибо!