This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: How to "flatten" an input document?


> 	I have an input document that's a set of nested tags :
> 
> 	<X>
> 	  <Y>
> 	    <Z/>
> 	  </Y>
> 	</X>
> 
> 	And I want to generate an output document that looks like this:
> 
> 	<X>
> 	  <ref type="Y">
> 	</X>
> 	<Y>
> 	  <ref type="Z">
> 	</Y>
> 	<Z/>
>
It's hard to infer your requirement from one example, perhaps you want
something like:

<xsl:template match="*">
  <xsl:copy>
    <xsl:for-each select="*">
      <ref type="{name()}">
    </xsl:for-each>
   </xsl:copy>
   <xsl:apply-templates/>
</xsl:template>
 
> 
> 	This does not seem to be possible in XSL,
Everything is possible in XSL

> since there doesn't seem to be 
> any way to output two elements at different places in the 
> output tree as a result of one rule.

Think of the stylesheet as having "append" access to the result tree. It's
not quite the exact model (because there's no guarantee of sequential
execution) but it's closer than the way you're thinking about it.

 Mike Kay


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]