XSL: Slå samman flera XML och ignorera dubbletter?

Trädvy Permalänk
Medlem
Plats
Valbo
Registrerad
Aug 2002

XSL: Slå samman flera XML och ignorera dubbletter?

Jag har gjort en XSL fil som bygger ihop flera XML "moduler" till en HTML fil med hjälp av XSL document().

Jag har precis gjort det möjligt för mina XML "moduler" att i sin tur inkludera andra moduler som har funktioner den modulen behöver.

exempel XML modul

<module> <required_modules> <module name="otherModule" /> </required_modules> <css> * { css stuff } </css> <html> allt innanför html taggarna placeras i <body> i färdiga HTML dokumentet. </html> <script> JS kod </script> </module>

XSL för att inkludera utvalda delar ifrån modul XML filerna

<xsl:for-each select="/required_modules/module"> <xsl:apply-templates select="document(concat(@name,'.xml'))/module/html"/> </xsl:for-each>

samt motsvarande för css och script.

Problemet med den rekursiva inkluderingen av XML gör att jag får dubbletter av det som två andra moduler anger som <required_modules>.

om både module B och C kräver modul A, så kommer modul A att inkluderas i färdiga HTML filen två gånger.

Är det möjligt att lösa det med XSL?

Desktop: | Core i5-4690K | Zotac GTX 970 | 16Gb RAM | 256Gb Samsung 830 SSD
NAS: HP Microserver Gen8 | 12GB DDR2 Ram | 3x1.5Tb ZFS | FreeNAS