Subject: RE: 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: 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
|