xsl-list
[Top] [All Lists]

RE: [xsl] Reading recursive from a list

2007-10-01 07:44:46
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(_at_)saxonica(_dot_)com] 
Sent: Monday, October 01, 2007 8:42 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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



--~------------------------------------------------------------------
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>
--~--


--~------------------------------------------------------------------
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>