xsl-list
[Top] [All Lists]

RE: removing nodes according to attibute value

2005-11-01 09:04:56
I'm trying to remove all elements that have a specific 
attribute containing 
some characters.

Start with an identity template that copies everything:

<xsl:template match="*">
  <xsl:copy><xsl:copy-of select="@*"/><xsl:apply-templates/></xsl:copy>
</xsl:template>

See example below... I need to remove all 
/ApplicationCatalogue/Category/Product that have @code 
starting with TT.

Add a template rule that doesn't copy such elements:

<xsl:template match="Product[starts-with(@code, 'TT')]"/>


It has to be generic as the xml provided can have more attributes & 
elements.
Also I would need to remove the 
/ApplicationCatalogue/Category if it doesn't 
have any Product left after the removal

Add another template rule:

<xsl:template match="Category[not(Product[not(starts-with(@code, 'TT))])]"/>

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


Any idea ??? Thanx a million ...


<ApplicationCatalogue name="42222_downloads_stg">
 <Category name="2_live_crew" description="2_live_crew">
  <Product code="TT050089891" position="0">
   <Alias isDefault="true">
    <Name>89891</Name>
    <Extra></Extra>
   </Alias>
   <Attributes>
    <OTAobject_otaother_namepreview>Getting 
High</OTAobject_otaother_namepreview>
    <OTAobject_otaother_author>2 Live Crew</OTAobject_otaother_author>
   </Attributes>
  </Product>
  <Product code="PP050089892" position="0">
   <Alias isDefault="true">
    <Name>89892</Name>
    <Extra></Extra>
   </Alias>
   <Attributes>
    <OTAobject_otaother_namepreview>Pimp Of The 
Year</OTAobject_otaother_namepreview>
    <OTAobject_otaother_author>2 Live Crew</OTAobject_otaother_author>
   </Attributes>
  </Product>
  <Product code="PP050089893" position="0">
   <Alias isDefault="true">
    <Name>89893</Name>
    <Extra></Extra>
   </Alias>
   <Attributes>
    <OTAobject_otaother_namepreview>Shake Junk 
Queen</OTAobject_otaother_namepreview>
    <OTAobject_otaother_author>2 Live Crew</OTAobject_otaother_author>
   </Attributes>
  </Product>
  <Product code="TT050089894" position="0">
   <Alias isDefault="true">
    <Name>89894</Name>
    <Extra></Extra>
   </Alias>
   <Attributes>
    <OTAobject_otaother_namepreview>Stop 
Playin</OTAobject_otaother_namepreview>
    <OTAobject_otaother_author>2 Live Crew</OTAobject_otaother_author>
   </Attributes>
  </Product>
 </Category>
</ApplicationCatalogue>


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--