XSL - Attributen verwerken
Het probleem
Ik wil XML-code importeren in een database. Daarbij komen alle eind-nodes overeen met kolomnamen. Daarvoor moeten tags uniek zijn. Dat heb ik hier geregeld. Nu het volgende probleem: Wat doe ik met attributen? → Die wil ik omfietsen naar aparte tags, om ze op dezelfde manier te kunnen importeren als de andere tags --
Maar niet altijd: Er zijn twee situaties:
Situatie (1): Attribuutnaam wordt nieuw element
Concreter: Ik wil invoer zoals
<items> <item type="S"> <description>Betaalkosten</description </item> ... </items>
transformeren naar
<items> <item> <item_type>S</item_type> <description>Betaalkosten</description </item> ... </items>
Situatie (2): Attribuutwaarde wordt nieuw element
Invoer zoals
<FreeFields> <FreeTexts> <FreeText number="1"/> <FreeText number="2"/> <FreeText number="3"/> <FreeText number="4"/> <FreeText number="5">Codes</FreeText> <FreeText number="6">Codes</FreeText> <FreeText number="7"/> <FreeText number="8"/> <FreeText number="9"/> <FreeText number="10"/> </FreeTexts> </FreeFields>
moet worden:
<FreeFields> <FreeTexts> <FreeText_number_01/> <FreeText_number_02/> <FreeText_number_03/> <FreeText_number_04/> <FreeText_number_05>Codes</FreeText_number_05> <FreeText_number_06>Codes</FreeText_number_06> ... </FreeTexts> </FreeFields>
Terminologie
Het is nogal lastig denken over een probleem, als je het niet eens kunt benoemen. Hierbij wat terminologie, onderhevig aan nieuwe inzichten:
In:
<Item code="00000001" type="S" searchcode="00000001"> <Description>Widget</Description> </item>
Hebben de onderdelen deze namen:
* <item>, <description> - Dit zijn tags * <description> - Einnode * code="00000001" - Attribuut * code - Attribuutnaam * 00000001 - Attribuutwaarde.
Bronnen
- https://stackoverflow.com/questions/5332266/xslt-copy-attributes-from-child-element
- https://stackoverflow.com/questions/5941233/how-to-copy-specific-attribute-using-xslt
- https://stackoverflow.com/questions/45882396/in-xslt-how-to-copy-all-attributes-from-all-child-nodes-to-root-node-of-xml
- https://stackoverflow.com/questions/19016023/xslt-copy-attribute-into-a-new-element-in-the-child - Dit is precies mijn probleem
- http://dh.obdurodon.org/identity.xhtml