[Home] [By Thread] [By Date] [Recent Entries]

  • From: "Thomas B. Passin" <tpassin@h...>
  • To: xml-dev@l...
  • Date: Fri, 15 Dec 2000 08:42:21 -0500

Michel Rodriguez asked about restructuring a flat document with xslt -

>
>   The initial XML is something like:
>
>    <doc>
>      <!-- stuff -->
>      <!-- there are actually _NO_ comments in the file -->
>      <!-- names have been changed to protect the identity of the victims-->
>      <person er="officer">Ms Foo</person>
>      <person er="officer">Mr Bar</person>
>      <person>Mss Toto</person>
>      <person>Dr Tata</person>
>      <!-- other stuff -->
>    </doc>
>
>    And I want a result like:
>
>    <doc>
>      <!-- stuff -->
>      <perslist>
>        <officers>
>          <person>Ms Foo</person>
>          <person>Mr Bar</person>
>        </officers>
>        <person>Mss Toto</person>
>        <person>Dr Tata</person>
>      </perslist>
>      <!-- other stuff -->
>    </doc>
>

How about this?  It produces what you said you want, e xcept for formatting
details.

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/">
<perslist>

<officers>
<xsl:for-each select='/doc/person[@er="officer"]'>
<person><xsl:value-of select='.'/></person>
</xsl:for-each>
</officers>

<xsl:for-each select='/doc/person[not(@er="officer")]'>
<person><xsl:value-of select='.'/></person>
</xsl:for-each>

</perslist>
 </xsl:template>

</xsl:stylesheet>

Cheers,

Tom P


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member