Mega Code Archive

 
Categories / XML Tutorial / Xpath
 

Current name

File: Data.xml <?xml version="1.0"?> <root ref="rootref" name="blue">   <glossary>     <item ref="blue" name="rootref">rootref</item>   </glossary>   <glossary>     <item ref="itemref" name="itemref">itemref</item>   </glossary> </root> File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet version="1.0"   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">   <xsl:output method="xml" indent="yes" />   <xsl:template match="/">     <xsl:apply-templates select="root" />   </xsl:template>   <xsl:template match="root">     <xsl:for-each select="//glossary/item[@name=current()/@ref]">       <xsl:copy-of select="." />       <xsl:for-each select=".">         <xsl:for-each select="//glossary/item[@name=current()/@ref]">           <xsl:copy-of select="." />         </xsl:for-each>       </xsl:for-each>     </xsl:for-each>     <xsl:for-each select="//glossary/item[@name=./@ref]">       <xsl:copy-of select="." />     </xsl:for-each>     <xsl:for-each select=".">       <xsl:copy-of select="." />     </xsl:for-each>   </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?> <item ref="blue" name="rootref">rootref</item> <item ref="itemref" name="itemref">itemref</item> <root ref="rootref" name="blue">     <glossary>         <item ref="blue" name="rootref">rootref</item>     </glossary>     <glossary>         <item ref="itemref" name="itemref">itemref</item>     </glossary> </root>