[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Reading recursive from a list


Subject: RE: [xsl] Reading recursive from a list
From: "Scott Trenda" <Scott.Trenda@xxxxxxxx>
Date: Mon, 1 Oct 2007 09:44:19 -0500

Keys are cool too:

<stylesheet version="1.0"
  xmlns="http://www.w3.org/1999/XSL/Transform"
  xmlns:ani="Animals">

  <key name="ani:mals" match="ani:UnitInfo" use="ani:Type"/>

  <template match="ani:UnitInfos">
    <copy>
      <apply-templates/>
    </copy>
  </template>

  <template match="ani:Type">
    <!-- trap the context node's contents: -->
    <param name="ani:type" select="."/>
    <!-- switch the context document for the key: -->
    <for-each select="document('animals-list.xml')">
      <copy-of select="key('ani:mals', $ani:type)"/>
    </for-each>
  </template>

</stylesheet>

~ Scott

-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
Sent: Monday, October 01, 2007 8:42 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Reading recursive from a list


Ignoring namespaces, it's:

<xsl:copy-of select="/AllUnitInfos/UnitInfos/UnitInfo[Type =
document('selection.xml')/UnitInfos/Type"/>

In 2.0, specify xpath-default-namespace="Animals".

In 1.0, prefix each name in the expression above with "a:" and bind
xmlns:a="Animals" in the stylesheet.

Michael Kay
http://www.saxonica.com/

>
>
> Input file:
>
> <AllUnitInfos xmlns="Animals">
> 	<UnitInfos>
> 		<UnitInfo>
> 			<Class>UNITCLASS_LION</Class>
> 			<Type>UNIT_LION</Type>
> 			<bla/>
> 		</UnitInfo>
> 		<UnitInfo>
> 			<Class>UNITCLASS_CAT</Class>
> 			<Type>UNIT_CAT</Type>
> 			<bla/>
> 		</UnitInfo>
> 		<UnitInfo>
> 			<Class>UNITCLASS_WOLF</Class>
> 			<Type>UNIT_WOLF</Type>
> 			<bla/>
> 		</UnitInfo>
> 		<UnitInfo>
> 			<Class>UNITCLASS_DOG</Class>
> 			<Type>UNIT_DOG</Type>
> 			<bla/>
> 		</UnitInfo>
> 	<UnitInfos>
> </AllUnitInfos>
>
>
>
> My Selection list:
>
> <UnitInfos xmlns="Animals">
> 	<Type>UNIT_LION</Type>
> 	<Type>UNIT_DOG</Type>
> </UnitInfos>
>
>
> According to my selection List, I would like to copy all
> UnitInfo elements with their children that have a type
> element which is listed in
> the small list above.
>
>
> Output should be this:
>
> <AllUnitInfos xmlns="Animals">
> 	<UnitInfos>
> 		<UnitInfo>
> 			<Class>UNITCLASS_LION</Class>
> 			<Type>UNIT_LION</Type>
> 			<bla/>
> 		</UnitInfo>
> 		<UnitInfo>
> 			<Class>UNITCLASS_DOG</Class>
> 			<Type>UNIT_DOG</Type>
> 			<bla/>
> 		</UnitInfo>
> 	<UnitInfos>
> </AllUnitInfos>
>
>
> The list above could be placed in a file or anywhere that
> would make it possible/easier.
>
> Many thanks for any idea,
> Houman
>
>
> Tribold News Alert!   Tribold Accelerates Growth With New CEO
> Appointment.
>
> Tribold Limited.  Registered Office: Carmelite, 50 Victoria
> Embankment, Blackfriars, London EC4Y 0DX, United Kingdom.
> Registered in England and Wales No: 4942611


Current Thread