2011-09-13 4 views
2

J'ai un script qui crée dynamiquement des documents XML. Cela signifie que la profondeur des enfants est inconnue. Est-il possible de créer XSLT pour un document XML dynamique lorsque le niveau enfants est inconnu?XSLT pour l'imbrication dynamique XML dynamique

Exemple 1:

<root> 
    <object type="set"> 
     <name>Test1</name> 
     <object type="set"> 
      <name>Test11</name> 
     </object> 
    </object> 

    <object type="set"> 
     <name>Test2</name> 
    </object> 
</root> 

sortie n ° 1:

<html> 
    <body> 
     <div>Test1 
      <div>Test11</div> 
     </div> 
     <div>Test2</div> 
    </body> 
</html> 

Exemple # 2 (enfants changent):

<root> 
    <object type="set"> 
     <name>Test1</name> 
     <object type="set"> 
      <name>Test11</name> 
      <object type="set"> 
       <name>Test111</name> 
      </object> 
     </object> 
    </object> 

    <object type="set"> 
     <name>Test2</name> 
     <object type="set"> 
      <name>Test22</name> 
     </object> 
    </object> 
</root> 

sortie n ° 2:

<html> 
    <body> 
     <div>Test1 
      <div>Test11 
       <div>Test111</div> 
      </div> 
     </div> 
     <div>Test2 
      <div>Test22</div> 
     </div> 
    </body> 
</html> 

Répondre

1

Cela devrait vous donner les résultats souhaités:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="/"> 
     <html> 
      <body> 
       <xsl:apply-templates /> 
      </body> 
     </html> 
    </xsl:template> 

    <xsl:template match="object"> 
     <div> 
      <xsl:value-of select="./name"/> 
      <xsl:apply-templates /> 
     </div> 
    </xsl:template> 

    <xsl:template match="name" /> 

</xsl:stylesheet> 
+0

Merci beaucoup! J'ai essayé de l'accomplir mais je ne m'attendais jamais à ce que cela puisse être fait aussi facilement. – huuerequer