pauldick    01/02/12 12:21:31

  Added:       test/tests/conf/idkey idkey37.xml idkey37.xsl idkey38.xml
                        idkey38.xsl idkey39.xml idkey39.xsl idkey40.xml
                        idkey40.xsl idkey41.xml idkey41.xsl idkey42.xml
                        idkey42.xsl idkey43.xml idkey43.xsl idkey44.xml
                        idkey44.xsl idkey45.xml idkey45.xsl idkey46.xml
                        idkey46.xsl idkey47.xml idkey47.xsl idkey48.xml
                        idkey48.xsl idkey49.xml idkey49.xsl idkey50.xml
                        idkey50.xsl
  Log:
  New tests for key()//x and id()//x in match patterns
  
  Revision  Changes    Path
  1.1                  xml-xalan/test/tests/conf/idkey/idkey37.xml
  
  Index: idkey37.xml
  ===================================================================
  <?xml version="1.0"?>
  <!DOCTYPE tee [
    <!ELEMENT tee (a*)>
    <!ELEMENT s (r)>
    <!ELEMENT r EMPTY>
    <!ATTLIST s id ID #REQUIRED>
    <!ATTLIST r size CDATA #REQUIRED>
  ]>
  <tee>
    <s id="a"><r size="20"/></s>
    <s id="b"><r size="18"/></s>
    <s id="c"><r size="12"/></s>
    <s id="d"><r size="19"/></s>
    <s id="e"><r size="14"/></s>
  </tee>
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey37.xsl
  
  Index: idkey37.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  
    <!-- FileName: idkey37 -->
    <!-- Document: http://www.w3.org/TR/xslt -->
    <!-- DocVersion: 19991116 -->
    <!-- Section: 5.2 -->
    <!-- Creator: David Marston -->
    <!-- Purpose: Test id(list) filtered by a predicate, in a match pattern. -->
  
  <xsl:template match="/">
    <out>
      <xsl:for-each select="tee/s">
        <xsl:apply-templates select="r"/>
      </xsl:for-each>
    </out>
  </xsl:template>
  
  <xsl:template match="id('b d c')/[EMAIL PROTECTED] &gt; 17]" priority="2">
    <xsl:text>&#10;</xsl:text>
    <big><xsl:value-of select="../@id"/></big>
  </xsl:template>
  
  <xsl:template match="r" priority="1">
    <xsl:text>&#10;</xsl:text>
    <other><xsl:value-of select="../@id"/></other>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey38.xml
  
  Index: idkey38.xml
  ===================================================================
  <?xml version="1.0"?>
  <!DOCTYPE tee [
    <!ELEMENT tee (a*)>
    <!ELEMENT s (r)>
    <!ELEMENT r EMPTY>
    <!ATTLIST s id ID #REQUIRED>
    <!ATTLIST r size CDATA #REQUIRED>
  ]>
  <tee>
    <s id="a"><r size="20"/></s>
    <s id="b"><r size="18"/></s>
    <s id="c"><r size="12"/></s>
    <s id="d"><r size="19"/></s>
    <s id="e"><r size="14"/></s>
  </tee>
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey38.xsl
  
  Index: idkey38.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  
    <!-- FileName: idkey38 -->
    <!-- Document: http://www.w3.org/TR/xslt -->
    <!-- DocVersion: 19991116 -->
    <!-- Section: 5.2 -->
    <!-- Creator: David Marston -->
    <!-- Purpose: Test id() filtered by a predicate, in a match pattern. -->
  
  <xsl:template match="/">
    <out>
      <xsl:for-each select="tee/s">
        <xsl:apply-templates select="r"/>
      </xsl:for-each>
    </out>
  </xsl:template>
  
  <xsl:template match="id('d')/[EMAIL PROTECTED] &gt; 17]" priority="2">
    <xsl:text>&#10;</xsl:text>
    <bigD><xsl:value-of select="../@id"/></bigD>
  </xsl:template>
  
  <xsl:template match="[EMAIL PROTECTED] &gt; 17]">
    <xsl:text>&#10;</xsl:text>
    <big><xsl:value-of select="../@id"/></big>
  </xsl:template>
  
  <xsl:template match="r">
    <xsl:text>&#10;</xsl:text>
    <other><xsl:value-of select="../@id"/></other>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey39.xml
  
  Index: idkey39.xml
  ===================================================================
  <?xml version="1.0"?>
  <!DOCTYPE tee [
    <!ELEMENT tee (a*)>
    <!ELEMENT s (r)>
    <!ELEMENT r EMPTY>
    <!ATTLIST s id ID #REQUIRED>
    <!ATTLIST r size CDATA #REQUIRED>
  ]>
  <tee>
    <s id="a"><r size="20"/></s>
    <s id="b"><r size="18"/></s>
    <s id="c"><r size="12"/></s>
    <s id="d"><r size="19"/></s>
    <s id="e"><r size="14"/></s>
  </tee>
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey39.xsl
  
  Index: idkey39.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  
    <!-- FileName: idkey39 -->
    <!-- Document: http://www.w3.org/TR/xslt -->
    <!-- DocVersion: 19991116 -->
    <!-- Section: 5.2 -->
    <!-- Creator: David Marston -->
    <!-- Purpose: Test id(list) with lower path filtered by a predicate, in a 
match pattern. -->
  
  <xsl:template match="/">
    <out>
      <xsl:for-each select="tee/s">
        <xsl:apply-templates select="r"/>
      </xsl:for-each>
    </out>
  </xsl:template>
  
  <xsl:template match="id('b d c')/[EMAIL PROTECTED] &gt; 17]">
    <xsl:text>&#10;</xsl:text>
    <big><xsl:value-of select="../@id"/></big>
  </xsl:template>
  
  <xsl:template match="r">
    <xsl:text>&#10;</xsl:text>
    <other><xsl:value-of select="../@id"/></other>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey40.xml
  
  Index: idkey40.xml
  ===================================================================
  <?xml version="1.0"?>
  <!-- Test for ID selection and pattern matching -->
  <!DOCTYPE doc [
    <!ELEMENT doc (#PCDATA|a|b|c)*>
    <!ATTLIST doc id ID #REQUIRED>
    <!ELEMENT a (#PCDATA|a|b|c)*>
    <!ATTLIST a id ID #REQUIRED>
    <!ELEMENT b (#PCDATA|a|b|c)*>
    <!ATTLIST b id ID #REQUIRED>
    <!ELEMENT c (#PCDATA|a|b|c)*>
    <!ATTLIST c id ID #REQUIRED >
  ]>
  <doc id="id0">
    <a id="id1">
      *id1*
      <a id="id2">*id2*
        <a id="id3">*id3*</a>
        <b id="id4">*id4*</b>
        <c id="id5">*id5*</c>
      </a>
      <b id="id6">*id6*</b>
      <c id="id7">*id7*</c>
    </a>
  </doc>
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey40.xsl
  
  Index: idkey40.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  
    <!-- FileName: idkey40 -->
    <!-- Document: http://www.w3.org/TR/xslt -->
    <!-- DocVersion: 19991116 -->
    <!-- Section: 5.2 -->
    <!-- Creator: David Marston -->
    <!-- Purpose: Find text in a node with particular ID, via match pattern. -->
  
  <xsl:strip-space elements="a b c"/>
  
  <xsl:template match="/">
    <out>
      <xsl:apply-templates select="doc/a//text()"/>
      <xsl:text>&#10;</xsl:text>
    </out>
  </xsl:template>
  
  <xsl:template match="id('id6')/text()">
    <xsl:text>&#10;</xsl:text>
    <bee><xsl:value-of select="../@id"/></bee>
  </xsl:template>
  
  <xsl:template match="text()">
    <xsl:text>&#10;</xsl:text>
    <other><xsl:value-of select="."/></other>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey41.xml
  
  Index: idkey41.xml
  ===================================================================
  <?xml version="1.0"?>
  <!-- Test for ID selection and pattern matching -->
  <!DOCTYPE doc [
    <!ELEMENT doc (#PCDATA|a|b|c)*>
    <!ATTLIST doc id ID #REQUIRED>
    <!ELEMENT a (#PCDATA|a|b|c)*>
    <!ATTLIST a id ID #REQUIRED>
    <!ELEMENT b (#PCDATA|a|b|c)*>
    <!ATTLIST b id ID #REQUIRED>
    <!ELEMENT c (#PCDATA|a|b|c)*>
    <!ATTLIST c id ID #REQUIRED >
  ]>
  <doc id="id0">
    <a id="id1">
      *id1*
      <a id="id2">*id2*
        <a id="id3">*id3*</a>
        <b id="id4">*id4*</b>
        <c id="id5">*id5*</c>
      </a>
      <b id="id6">*id6*</b>
      <c id="id7">*id7*</c>
    </a>
  </doc>
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey41.xsl
  
  Index: idkey41.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  
    <!-- FileName: idkey41 -->
    <!-- Document: http://www.w3.org/TR/xslt -->
    <!-- DocVersion: 19991116 -->
    <!-- Section: 5.2 -->
    <!-- Creator: David Marston -->
    <!-- Purpose: Find all text under a node with particular ID, via match 
pattern. -->
  
  <xsl:strip-space elements="a b c"/>
  
  <xsl:template match="/">
    <out>
      <xsl:apply-templates select="doc/a//text()"/>
      <xsl:text>&#10;</xsl:text>
    </out>
  </xsl:template>
  
  <xsl:template match="id('id2')//text()">
    <xsl:text>&#10;</xsl:text>
    <x><xsl:value-of select="../@id"/></x>
  </xsl:template>
  
  <xsl:template match="text()">
    <xsl:text>&#10;</xsl:text>
    <other><xsl:value-of select="."/></other>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey42.xml
  
  Index: idkey42.xml
  ===================================================================
  <?xml version="1.0"?>
  <!-- Test for ID selection and pattern matching -->
  <!DOCTYPE doc [
    <!ELEMENT doc (#PCDATA|a|b|c)*>
    <!ATTLIST doc id ID #REQUIRED>
    <!ELEMENT a (#PCDATA|a|b|c)*>
    <!ATTLIST a id ID #REQUIRED>
    <!ELEMENT b (#PCDATA|a|b|c)*>
    <!ATTLIST b id ID #REQUIRED>
    <!ELEMENT c (#PCDATA|a|b|c)*>
    <!ATTLIST c id ID #REQUIRED >
  ]>
  <doc id="id0">
    <a id="id1">
      *id1*
      <a id="id2">*id2*
        <a id="id3">*id3*</a>
        <b id="id4">*id4*</b>
        <c id="id5">*id5*</c>
      </a>
      <b id="id6">*id6*</b>
      <c id="id7">*id7*</c>
    </a>
  </doc>
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey42.xsl
  
  Index: idkey42.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  
    <!-- FileName: idkey42 -->
    <!-- Document: http://www.w3.org/TR/xslt -->
    <!-- DocVersion: 19991116 -->
    <!-- Section: 5.2 -->
    <!-- Creator: David Marston -->
    <!-- Purpose: Find all text under IDed node and apply predicate, via match 
pattern. -->
  
  <xsl:strip-space elements="a b c"/>
  
  <xsl:template match="/">
    <out>
      <xsl:apply-templates select="doc/a//text()"/>
      <xsl:text>&#10;</xsl:text>
    </out>
  </xsl:template>
  
  <xsl:template match="id('id2')/*[name()='b']/text()" priority="2">
    <xsl:text>&#10;</xsl:text>
    <bee><xsl:value-of select="../@id"/></bee>
  </xsl:template>
  
  <xsl:template match="id('id2')//text()">
    <xsl:text>&#10;</xsl:text>
    <x><xsl:value-of select="../@id"/></x>
  </xsl:template>
  
  <xsl:template match="text()">
    <xsl:text>&#10;</xsl:text>
    <other><xsl:value-of select="."/></other>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey43.xml
  
  Index: idkey43.xml
  ===================================================================
  <?xml version="1.0"?>
  <!-- Test for ID selection and pattern matching -->
  <!DOCTYPE doc [
    <!ELEMENT doc (#PCDATA|a|b|c)*>
    <!ATTLIST doc id ID #REQUIRED>
    <!ELEMENT a (#PCDATA|a|b|c)*>
    <!ATTLIST a id ID #REQUIRED>
    <!ELEMENT b (#PCDATA|a|b|c)*>
    <!ATTLIST b id ID #REQUIRED>
    <!ELEMENT c (#PCDATA|a|b|c)*>
    <!ATTLIST c id ID #REQUIRED >
  ]>
  <doc id="id0">
    <a id="id1">
      *id1*
      <a id="id2">*id2*
        <a id="id3">*id3*</a>
        <b id="id4">*id4*</b>
        <c id="id5">*id5*</c>
      </a>
      <b id="id6">*id6*</b>
      <c id="id7">*id7*</c>
    </a>
  </doc>
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey43.xsl
  
  Index: idkey43.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  
    <!-- FileName: idkey43 -->
    <!-- Document: http://www.w3.org/TR/xslt -->
    <!-- DocVersion: 19991116 -->
    <!-- Section: 5.2 -->
    <!-- Creator: David Marston -->
    <!-- Purpose: Use variables in match pattern in id() argument and 
predicate. -->
  
  <xsl:strip-space elements="a b c"/>
  
  <xsl:variable name="pick" select="'id2'"/>
  <xsl:variable name="major" select="'b'"/>
  
  <xsl:template match="/">
    <out>
      <xsl:apply-templates select="doc/a//text()"/>
      <xsl:text>&#10;</xsl:text>
    </out>
  </xsl:template>
  
  <xsl:template match="id($pick)/*[name()=$major]/text()" priority="2">
    <xsl:text>&#10;</xsl:text>
    <bee><xsl:value-of select="../@id"/></bee>
  </xsl:template>
  
  <xsl:template match="id($pick)//text()">
    <xsl:text>&#10;</xsl:text>
    <x><xsl:value-of select="../@id"/></x>
  </xsl:template>
  
  <xsl:template match="text()">
    <xsl:text>&#10;</xsl:text>
    <other><xsl:value-of select="."/></other>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey44.xml
  
  Index: idkey44.xml
  ===================================================================
  <?xml version="1.0"?>
  <Tree>
  <Level1 ID="id1">
        <Name First="Lee" MI="R" Last="Smith">Lee</Name>
        <Age>70</Age>
        <Level2 ID="id2">
                <Name First="Amby" MI="A" Last="Smith">Amby</Name>
                <Age>46</Age>
  
                <Level3 ID="id6">
                        <Name First="Julie" MI="A" Last="Smith">Jules</Name>
                        <Age>9</Age>
                </Level3>
                <Level3 ID="id9">
                        <Name First="Daniel" MI="L" Last="Smith">Daniel</Name>
                        <Age>8</Age>
                </Level3>
        </Level2>
        <Level2 ID="id3">
                <Name First="Ted" MI="R" Last="Smith">Ted</Name>
                <Age>45</Age>
                <Level3 ID="id8">
                        <Name First="Joshua" MI="R" Last="Smith">Joshua</Name>
                        <Age>7</Age>
                </Level3>
                <Level3 ID="id11">
                        <Name First="Lauren" MI="R" Last="Smith">Lauren</Name>
                        <Age>5</Age>
                </Level3>
        </Level2>
        <Level2 ID="id4">
                <Name First="Pedro" MI="Q" Last="Smith">Pedro</Name>
                <Age>43</Age>
                <Level3 ID="id7">
                        <Name First="Nathaniel" MI="Q" Last="Smith">Nate</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id10">
                        <Name First="Samual" MI="Q" Last="Smith">Sam</Name>
                        <Age>7</Age>
                </Level3>
        </Level2>
        <Level2 ID="id5">
                <Name First="Pablo" MI="E" Last="Smith">Pablo</Name>
                <Age>41</Age>
                <Level3 ID="id12">
                        <Name First="Benjamin" MI="D" Last="Smith">Ben</Name>
                        <Age>5</Age>
                </Level3>
                <Level3 ID="id13">
                        <Name First="Lucy" MI="E" Last="Smith">Lucy</Name>
                        <Age>2</Age>
                </Level3>
                <Level3 ID="id14">
                        <Name First="Jake" MI="E" Last="Smith">Jake</Name>
                        <Age>1</Age>
                </Level3>
        </Level2>
        <Level3 ID="id15">
                <Name First="Jeffery" MI="Q" Last="Smith">Jeff</Name>
                <Age>36</Age>
                <Level3 ID="id16">
                        <Name First="Christopher" MI="Q" 
Last="Smith">Christopher</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id17">
                        <Name First="Jabriella" MI="Q" 
Last="Smith">Jabriella</Name>
                        <Age>7</Age>
                </Level3>
        </Level3>
  </Level1>
  <childnodeset>
        <id>id6</id>
        <id>id7</id>
        <id>id8</id>
        <id>id9</id>
        <id>id10</id>
        <id>id11</id>
        <id>id12</id>
        <id>id13</id>
        <id>id14</id>
        <id>id15</id>
  </childnodeset>
  <parentnodeset>
        <id>id2</id>
        <id>id3</id>
        <id>id4</id>
        <id>id5</id>
  </parentnodeset>
  </Tree>
  
  
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey44.xsl
  
  Index: idkey44.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  
    <!-- FileName: idkey44 -->
    <!-- Document: http://www.w3.org/TR/xslt -->
    <!-- DocVersion: 19991116 -->
    <!-- Section: 5.2 -->
    <!-- Creator: Paul Dick -->
    <!-- Purpose: Test simple key()// filtered by a predicate, in a match 
pattern. -->
  
  
  <xsl:key name="Info" match="Level3" use="@ID"/>
  
  <xsl:template match="/">
   <out>
        <xsl:apply-templates select="//Level3"/>
   </out>
  </xsl:template>
  
  
  <xsl:template 
match="key('Info','id15')//Level3[Name[starts-with(@First,'J')]]">
        <xsl:text>&#10;</xsl:text>
        <xsl:element name="J-Name">
                <xsl:value-of select="Name/@First"/>
        </xsl:element>
  </xsl:template>
  
  <xsl:template match="*">
        <xsl:text>&#10;</xsl:text>
        <xsl:element name="Name">
                <xsl:value-of select="Name/@First"/>
        </xsl:element>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey45.xml
  
  Index: idkey45.xml
  ===================================================================
  <?xml version="1.0"?>
  <Tree>
  <Level1 ID="id1">
        <Name First="Lee" MI="R" Last="Smith">Lee</Name>
        <Age>70</Age>
        <Level2 ID="id2">
                <Name First="Amby" MI="A" Last="Smith">Amby</Name>
                <Age>46</Age>
  
                <Level3 ID="id6">
                        <Name First="Julie" MI="A" Last="Smith">Jules</Name>
                        <Age>9</Age>
                </Level3>
                <Level3 ID="id9">
                        <Name First="Daniel" MI="L" Last="Smith">Daniel</Name>
                        <Age>8</Age>
                </Level3>
        </Level2>
        <Level2 ID="id3">
                <Name First="Ted" MI="R" Last="Smith">Ted</Name>
                <Age>45</Age>
                <Level3 ID="id8">
                        <Name First="Joshua" MI="R" Last="Smith">Joshua</Name>
                        <Age>7</Age>
                </Level3>
                <Level3 ID="id11">
                        <Name First="Lauren" MI="R" Last="Smith">Lauren</Name>
                        <Age>5</Age>
                </Level3>
        </Level2>
        <Level2 ID="id4">
                <Name First="Pedro" MI="Q" Last="Smith">Pedro</Name>
                <Age>43</Age>
                <Level3 ID="id7">
                        <Name First="Nathaniel" MI="Q" Last="Smith">Nate</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id10">
                        <Name First="Samual" MI="Q" Last="Smith">Sam</Name>
                        <Age>7</Age>
                </Level3>
        </Level2>
        <Level2 ID="id5">
                <Name First="Pablo" MI="E" Last="Smith">Pablo</Name>
                <Age>41</Age>
                <Level3 ID="id12">
                        <Name First="Benjamin" MI="D" Last="Smith">Ben</Name>
                        <Age>5</Age>
                </Level3>
                <Level3 ID="id13">
                        <Name First="Lucy" MI="E" Last="Smith">Lucy</Name>
                        <Age>2</Age>
                </Level3>
                <Level3 ID="id14">
                        <Name First="Jake" MI="E" Last="Smith">Jake</Name>
                        <Age>1</Age>
                </Level3>
        </Level2>
        <Level3 ID="id15">
                <Name First="Jeffery" MI="Q" Last="Smith">Jeff</Name>
                <Age>36</Age>
                <Level3 ID="id16">
                        <Name First="Christopher" MI="Q" 
Last="Smith">Christopher</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id17">
                        <Name First="Jabriella" MI="Q" 
Last="Smith">Jabriella</Name>
                        <Age>7</Age>
                </Level3>
        </Level3>
  </Level1>
  <Level1 ID="id18">
        <Name First="Melvin" MI="R" Last="Gaas">Mel</Name>
        <Age>80</Age>
        <Level2 ID="id1">
                <Name First="Robert" MI="A" Last="Gaas">Bob</Name>
                <Age>52</Age>
  
                <Level3 ID="id20">
                        <Name First="Eric" MI="A" Last="Gaas">Eric</Name>
                        <Age>19</Age>
                </Level3>
                <Level3 ID="id21">
                        <Name First="Johnathan" MI="L" Last="Gaas">John</Name>
                        <Age>18</Age>
                </Level3>
        </Level2>
  </Level1>
  <childnodeset>
        <id>id6</id>
        <id>id7</id>
        <id>id8</id>
        <id>id9</id>
        <id>id10</id>
        <id>id11</id>
        <id>id12</id>
        <id>id13</id>
        <id>id14</id>
        <id>id15</id>
  </childnodeset>
  <parentnodeset>
        <id>id2</id>
        <id>id3</id>
        <id>id4</id>
        <id>id5</id>
  </parentnodeset>
  </Tree>
  
  
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey45.xsl
  
  Index: idkey45.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  
    <!-- FileName: idkey45 -->
    <!-- Document: http://www.w3.org/TR/xslt -->
    <!-- DocVersion: 19991116 -->
    <!-- Section: 5.2 -->
    <!-- Creator: Paul Dick -->
    <!-- Purpose: Test complex key()// filtered by a predicate in predicate, 
         in a match pattern. -->
  
  
  <xsl:key name="Info" match="Level1 | Level2" use="@ID"/>
  
  <xsl:template match="/">
   <out>
        <xsl:apply-templates select="//Level3"/>
   </out>
  </xsl:template>
  
  <xsl:template 
match="key('Info','id1')//Level3[Name[starts-with(@First,'J')]]">
        <xsl:text>&#10;</xsl:text>
        <xsl:element name="J-NAME">
                <xsl:value-of select="Name/@First"/>
        </xsl:element>
  </xsl:template>
  
  
  <xsl:template match="*">
        <xsl:text>&#10;</xsl:text>
        <xsl:element name="Name">
                <xsl:value-of select="Name/@First"/>
        </xsl:element>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey46.xml
  
  Index: idkey46.xml
  ===================================================================
  <?xml version="1.0"?>
  <Tree>
  <Level1 ID="id1">
        <Name First="Lee" MI="R" Last="Smith">Lee</Name>
        <Age>70</Age>
        <Level2 ID="id2">
                <Name First="Amby" MI="A" Last="Smith">Amby</Name>
                <Age>46</Age>
  
                <Level3 ID="id6">
                        <Name First="Julie" MI="A" Last="Smith">Jules</Name>
                        <Age>9</Age>
                </Level3>
                <Level3 ID="id9">
                        <Name First="Daniel" MI="L" Last="Smith">Daniel</Name>
                        <Age>8</Age>
                </Level3>
        </Level2>
        <Level2 ID="id3">
                <Name First="Ted" MI="R" Last="Smith">Ted</Name>
                <Age>45</Age>
                <Level3 ID="id8">
                        <Name First="Joshua" MI="R" Last="Smith">Joshua</Name>
                        <Age>7</Age>
                </Level3>
                <Level3 ID="id11">
                        <Name First="Lauren" MI="R" Last="Smith">Lauren</Name>
                        <Age>5</Age>
                </Level3>
        </Level2>
        <Level2 ID="id4">
                <Name First="Pedro" MI="Q" Last="Smith">Pedro</Name>
                <Age>43</Age>
                <Level3 ID="id7">
                        <Name First="Nathaniel" MI="Q" Last="Smith">Nate</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id10">
                        <Name First="Samual" MI="Q" Last="Smith">Sam</Name>
                        <Age>7</Age>
                </Level3>
        </Level2>
        <Level2 ID="id5">
                <Name First="Pablo" MI="E" Last="Smith">Pablo</Name>
                <Age>41</Age>
                <Level3 ID="id12">
                        <Name First="Benjamin" MI="D" Last="Smith">Ben</Name>
                        <Age>5</Age>
                </Level3>
                <Level3 ID="id13">
                        <Name First="Lucy" MI="E" Last="Smith">Lucy</Name>
                        <Age>2</Age>
                </Level3>
                <Level3 ID="id14">
                        <Name First="Jake" MI="E" Last="Smith">Jake</Name>
                        <Age>1</Age>
                </Level3>
        </Level2>
        <Level3 ID="id15">
                <Name First="Jeffery" MI="Q" Last="Smith">Jeff</Name>
                <Age>36</Age>
                <Level3 ID="id16">
                        <Name First="Christopher" MI="Q" 
Last="Smith">Christopher</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id17">
                        <Name First="Jabriella" MI="Q" 
Last="Smith">Jabriella</Name>
                        <Age>7</Age>
                </Level3>
        </Level3>
  </Level1>
  <Level1 ID="id18">
        <Name First="Melvin" MI="R" Last="Gaas">Mel</Name>
        <Age>80</Age>
        <Level2 ID="id4">
                <Name First="Robert" MI="A" Last="Gaas">Bob</Name>
                <Age>52</Age>
  
                <Level3 ID="id20">
                        <Name First="Eric" MI="A" Last="Gaas">Eric</Name>
                        <Age>19</Age>
                </Level3>
                <Level3 ID="id21">
                        <Name First="Johnathan" MI="L" Last="Gaas">John</Name>
                        <Age>18</Age>
                </Level3>
        </Level2>
  </Level1>
  
  <childnodeset>
        <id>id6</id>
        <id>id7</id>
        <id>id8</id>
        <id>id9</id>
        <id>id10</id>
        <id>id11</id>
        <id>id12</id>
        <id>id13</id>
        <id>id14</id>
        <id>id15</id>
  </childnodeset>
  <parentnodeset>
        <id>id2</id>
        <id>id3</id>
        <id>id4</id>
        <id>id5</id>
  </parentnodeset>
  </Tree>
  
  
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey46.xsl
  
  Index: idkey46.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  
    <!-- FileName: idkey46 -->
    <!-- Document: http://www.w3.org/TR/xslt -->
    <!-- DocVersion: 19991116 -->
    <!-- Section: 5.2 -->
    <!-- Creator: Paul Dick -->
    <!-- Purpose: Test complex key()//x in match pattern. -->
  
  
  <xsl:key name="Info" match="Level1 | Level2 | Level3" use="@ID"/>
  
  <xsl:template match="/">
   <out>
        <xsl:apply-templates select="//Level3"/>
   </out>
  </xsl:template>
  
  <xsl:template match="key('Info','id4')//Level3">
        <xsl:text>&#10;</xsl:text>
        <xsl:element name="Simple-Match">
                <xsl:value-of select="Name/@First"/>
        </xsl:element>
  </xsl:template>
  
  
  <xsl:template match="*">
        <xsl:text>&#10;</xsl:text>
        <xsl:element name="No-Match">
                <xsl:value-of select="Name/@First"/>
        </xsl:element>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey47.xml
  
  Index: idkey47.xml
  ===================================================================
  <?xml version="1.0"?>
  <Tree>
  <Level1 ID="id1">
        <Name First="Lee" MI="R" Last="Smith">Lee</Name>
        <Age>70</Age>
        <Level2 ID="id2">
                <Name First="Amby" MI="A" Last="Smith">Amby</Name>
                <Age>46</Age>
  
                <Level3 ID="id6">
                        <Name First="Julie" MI="A" Last="Smith">Jules</Name>
                        <Age>9</Age>
                </Level3>
                <Level3 ID="id9">
                        <Name First="Daniel" MI="L" Last="Smith">Daniel</Name>
                        <Age>8</Age>
                </Level3>
        </Level2>
        <Level2 ID="id3">
                <Name First="Ted" MI="R" Last="Smith">Ted</Name>
                <Age>45</Age>
                <Level3 ID="id8">
                        <Name First="Joshua" MI="R" Last="Smith">Joshua</Name>
                        <Age>7</Age>
                </Level3>
                <Level3 ID="id11">
                        <Name First="Lauren" MI="R" Last="Smith">Lauren</Name>
                        <Age>5</Age>
                </Level3>
        </Level2>
        <Level2 ID="id4">
                <Name First="Pedro" MI="Q" Last="Smith">Pedro</Name>
                <Age>43</Age>
                <Level3 ID="id7">
                        <Name First="Nathaniel" MI="Q" Last="Smith">Nate</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id10">
                        <Name First="Samual" MI="Q" Last="Smith">Sam</Name>
                        <Age>7</Age>
                </Level3>
        </Level2>
        <Level2 ID="id5">
                <Name First="Pablo" MI="E" Last="Smith">Pablo</Name>
                <Age>41</Age>
                <Level3 ID="id12">
                        <Name First="Benjamin" MI="D" Last="Smith">Ben</Name>
                        <Age>5</Age>
                </Level3>
                <Level3 ID="id13">
                        <Name First="Lucy" MI="E" Last="Smith">Lucy</Name>
                        <Age>2</Age>
                </Level3>
                <Level3 ID="id14">
                        <Name First="Jake" MI="E" Last="Smith">Jake</Name>
                        <Age>1</Age>
                </Level3>
        </Level2>
        <Level3 ID="id15">
                <Name First="Jeffery" MI="Q" Last="Smith">Jeff</Name>
                <Age>36</Age>
                <Level3 ID="id16">
                        <Name First="Christopher" MI="Q" 
Last="Smith">Chris</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id17">
                        <Name First="Jabriella" MI="Q" 
Last="Smith">Jabriella</Name>
                        <Age>7</Age>
                </Level3>
        </Level3>
  </Level1>
  <Level2 ID="id1">
        <Name First="Melvin" MI="R" Last="Gaas">Mel</Name>
        <Age>80</Age>
        <Level3 ID="id8">
                <Name First="Robert" MI="A" Last="Gaas">Bob</Name>
                <Age>52</Age>
  
                <Level3 ID="id20">
                        <Name First="Eric" MI="A" Last="Gaas">Eric</Name>
                        <Age>19</Age>
                </Level3>
                <Level3 ID="id21">
                        <Name First="Johnathan" MI="L" Last="Gaas">John</Name>
                        <Age>18</Age>
                </Level3>
        </Level3>
  </Level2>
  <childnodeset>
        <id>id6</id>
        <id>id7</id>
        <id>id8</id>
        <id>id9</id>
        <id>id10</id>
        <id>id11</id>
        <id>id12</id>
        <id>id13</id>
        <id>id14</id>
        <id>id15</id>
  </childnodeset>
  <parentnodeset>
        <id>id2</id>
        <id>id3</id>
        <id>id4</id>
        <id>id5</id>
  </parentnodeset>
  </Tree>
  
  
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey47.xsl
  
  Index: idkey47.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  
    <!-- FileName: idkey47 -->
    <!-- Document: http://www.w3.org/TR/xslt -->
    <!-- DocVersion: 19991116 -->
    <!-- Section: 5.2 -->
    <!-- Creator: Paul Dick -->
    <!-- Purpose: Test complex key()//x/x in match pattern. -->
  
  
  <xsl:key name="Info" match="Level1 | Level2 | Level3" use="@ID"/>
  
  <xsl:template match="/">
   <out>
        <xsl:apply-templates select="//Level3"/>
   </out>
  </xsl:template>
  
  <xsl:template match="key('Info','id1')//Level3/Level3">
        <xsl:text>&#10;</xsl:text>
        <xsl:element name="Simple-Match">
                <xsl:value-of select="Name/@First"/>
        </xsl:element>
  </xsl:template>
  
  
  <xsl:template match="*">
        <xsl:text>&#10;</xsl:text>
        <xsl:element name="No-Match">
                <xsl:value-of select="Name/@First"/>
        </xsl:element>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey48.xml
  
  Index: idkey48.xml
  ===================================================================
  <?xml version="1.0"?>
  <Tree>
  <Level1 ID="id1">
        <Name First="Lee" MI="R" Last="Smith">Lee</Name>
        <Age>70</Age>
        <Level2 ID="id2">
                <Name First="Amby" MI="A" Last="Smith">Amby</Name>
                <Age>46</Age>
  
                <Level3 ID="id6">
                        <Name First="Julie" MI="A" Last="Smith">Jules</Name>
                        <Age>9</Age>
                </Level3>
                <Level3 ID="id9">
                        <Name First="Daniel" MI="L" Last="Smith">Daniel</Name>
                        <Age>8</Age>
                </Level3>
        </Level2>
        <Level2 ID="id3">
                <Name First="Ted" MI="R" Last="Smith">Ted</Name>
                <Age>45</Age>
                <Level3 ID="id8">
                        <Name First="Joshua" MI="R" Last="Smith">Joshua</Name>
                        <Age>7</Age>
                </Level3>
                <Level3 ID="id11">
                        <Name First="Lauren" MI="R" Last="Smith">Lauren</Name>
                        <Age>5</Age>
                </Level3>
        </Level2>
        <Level2 ID="id4">
                <Name First="Pedro" MI="Q" Last="Smith">Pedro</Name>
                <Age>43</Age>
                <Level3 ID="id7">
                        <Name First="Nathaniel" MI="Q" Last="Smith">Nate</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id10">
                        <Name First="Samual" MI="Q" Last="Smith">Sam</Name>
                        <Age>7</Age>
                </Level3>
        </Level2>
        <Level2 ID="id5">
                <Name First="Pablo" MI="E" Last="Smith">Pablo</Name>
                <Age>41</Age>
                <Level3 ID="id12">
                        <Name First="Benjamin" MI="D" Last="Smith">Ben</Name>
                        <Age>5</Age>
                </Level3>
                <Level3 ID="id13">
                        <Name First="Lucy" MI="E" Last="Smith">Lucy</Name>
                        <Age>2</Age>
                </Level3>
                <Level3 ID="id14">
                        <Name First="Jake" MI="E" Last="Smith">Jake</Name>
                        <Age>1</Age>
                </Level3>
        </Level2>
        <Level3 ID="id15">
                <Name First="Jeffery" MI="Q" Last="Smith">Jeff</Name>
                <Age>36</Age>
                <Level3 ID="id16">
                        <Name First="Christopher" MI="Q" 
Last="Smith">Chris</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id17">
                        <Name First="Jabriella" MI="Q" 
Last="Smith">Jabriella</Name>
                        <Age>7</Age>
                </Level3>
        </Level3>
  </Level1>
  <Level2 ID="id1">
        <Name First="Melvin" MI="R" Last="Gaas">Mel</Name>
        <Age>80</Age>
        <Level3 ID="id8">
                <Name First="Robert" MI="A" Last="Gaas">Bob</Name>
                <Age>52</Age>
  
                <Level3 ID="id20">
                        <Name First="Eric" MI="A" Last="Gaas">Eric</Name>
                        <Age>19</Age>
                </Level3>
                <Level3 ID="id21">
                        <Name First="Johnathan" MI="Q" Last="Gaas">John</Name>
                        <Age>8</Age>
                </Level3>
        </Level3>
  </Level2>
  <childnodeset>
        <id>id6</id>
        <id>id7</id>
        <id>id8</id>
        <id>id9</id>
        <id>id10</id>
        <id>id11</id>
        <id>id12</id>
        <id>id13</id>
        <id>id14</id>
        <id>id15</id>
  </childnodeset>
  <parentnodeset>
        <id>id2</id>
        <id>id3</id>
        <id>id4</id>
        <id>id5</id>
  </parentnodeset>
  </Tree>
  
  
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey48.xsl
  
  Index: idkey48.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  
    <!-- FileName: idkey48 -->
    <!-- Document: http://www.w3.org/TR/xslt -->
    <!-- DocVersion: 19991116 -->
    <!-- Section: 5.2 -->
    <!-- Creator: Paul Dick -->
    <!-- Purpose: Test complex key()//x/x, with complex predicate in match 
pattern. -->
  
  
  <xsl:key name="Info" match="Level1 | Level2 | Level3" use="@ID"/>
  
  <xsl:template match="/">
   <out>
        <xsl:apply-templates select="//Level3"/>
   </out>
  </xsl:template>
  
  <xsl:template match="key('Info','id1')//Level3/Level3[Name/@MI='Q'][Age='8']">
        <xsl:text>&#10;</xsl:text>
        <xsl:element name="Complex-Match">
                <xsl:value-of select="Name/@First"/>
        </xsl:element>
  </xsl:template>
  
  
  <xsl:template match="*">
        <xsl:text>&#10;</xsl:text>
        <xsl:element name="No-Match">
                <xsl:value-of select="Name/@First"/>
        </xsl:element>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey49.xml
  
  Index: idkey49.xml
  ===================================================================
  <?xml version="1.0"?>
  <Tree>
  <Level1 ID="id1">
        <Name First="Lee" MI="R" Last="Smith">Lee</Name>
        <Age>70</Age>
        <Level2 ID="id2">
                <Name First="Amby" MI="A" Last="Smith">Amby</Name>
                <Age>46</Age>
  
                <Level3 ID="id6">
                        <Name First="Julie" MI="A" Last="Smith">Jules</Name>
                        <Age>9</Age>
                </Level3>
                <Level3 ID="id9">
                        <Name First="Daniel" MI="L" Last="Smith">Daniel</Name>
                        <Age>8</Age>
                </Level3>
        </Level2>
        <Level2 ID="id3">
                <Name First="Ted" MI="R" Last="Smith">Ted</Name>
                <Age>45</Age>
                <Level3 ID="id8">
                        <Name First="Joshua" MI="R" Last="Smith">Joshua</Name>
                        <Age>7</Age>
                </Level3>
                <Level3 ID="id11">
                        <Name First="Lauren" MI="R" Last="Smith">Lauren</Name>
                        <Age>5</Age>
                </Level3>
        </Level2>
        <Level2 ID="id4">
                <Name First="Pedro" MI="Q" Last="Smith">Pedro</Name>
                <Age>43</Age>
                <Level3 ID="id7">
                        <Name First="Nathaniel" MI="Q" Last="Smith">Nate</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id10">
                        <Name First="Samual" MI="Q" Last="Smith">Sam</Name>
                        <Age>7</Age>
                </Level3>
        </Level2>
        <Level2 ID="id5">
                <Name First="Pablo" MI="E" Last="Smith">Pablo</Name>
                <Age>41</Age>
                <Level3 ID="id12">
                        <Name First="Benjamin" MI="D" Last="Smith">Ben</Name>
                        <Age>5</Age>
                </Level3>
                <Level3 ID="id13">
                        <Name First="Lucy" MI="E" Last="Smith">Lucy</Name>
                        <Age>2</Age>
                </Level3>
                <Level3 ID="id14">
                        <Name First="Jake" MI="E" Last="Smith">Jake</Name>
                        <Age>1</Age>
                </Level3>
        </Level2>
        <Level3 ID="id15">
                <Name First="Jeffery" MI="Q" Last="Smith">Jeff</Name>
                <Age>36</Age>
                <Level3 ID="id16">
                        <Name First="Christopher" MI="Q" 
Last="Smith">Chris</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id17">
                        <Name First="Jabriella" MI="Q" 
Last="Smith">Jabriella</Name>
                        <Age>7</Age>
                </Level3>
        </Level3>
  </Level1>
  <Level2 ID="id18">
        <Name First="Melvin" MI="R" Last="Gaas">Mel</Name>
        <Age>80</Age>
        <Level3 ID="id19">
                <Name First="Robert" MI="A" Last="Gaas">Bob</Name>
                <Age>52</Age>
  
                <Level3 ID="id20">
                        <Name First="Eric" MI="A" Last="Gaas">Eric</Name>
                        <Age>19</Age>
                </Level3>
                <Level3 ID="id21">
                        <Name First="Johnathan" MI="L" Last="Gaas">John</Name>
                        <Age>18</Age>
                </Level3>
        </Level3>
  </Level2>
  <childnodeset>
        <id>id6</id>
        <id>id7</id>
        <id>id8</id>
        <id>id9</id>
        <id>id10</id>
        <id>id11</id>
        <id>id12</id>
        <id>id13</id>
        <id>id14</id>
        <id>id15</id>
  </childnodeset>
  <parentnodeset>
        <id>id2</id>
        <id>id3</id>
        <id>id4</id>
        <id>id5</id>
        <id>id15</id>
        <id>id19</id>
  </parentnodeset>
  <grandparent>
        <id>id1</id>
        <id>id18</id>
  </grandparent>
  </Tree>
  
  
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey49.xsl
  
  Index: idkey49.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  
    <!-- FileName: idkey49 -->
    <!-- Document: http://www.w3.org/TR/xslt -->
    <!-- DocVersion: 19991116 -->
    <!-- Section: 5.2 -->
    <!-- Creator: Paul Dick -->
    <!-- Purpose: Test simple key(name,variable)//x/x filtered by a comples 
           predicate, in a match pattern. -->
  
  
  <xsl:key name="Info" match="Level1" use="@ID"/>
  <xsl:variable name="testset" select="/Tree/grandparent/id"/>
  
  <xsl:template match="/">
   <out>
        <xsl:apply-templates select="//Level3"/>
   </out>
  </xsl:template>
  
  <xsl:template 
match="key('Info',$testset)//Level3/Level3[Name[starts-with(@First,'J')]]">
        <xsl:text>&#10;</xsl:text>
        <xsl:element name="J-Name">
                <xsl:value-of select="Name/@First"/>
        </xsl:element>
  </xsl:template>
  
  <xsl:template match="*">
        <xsl:text>&#10;</xsl:text>
        <xsl:element name="Name">
                <xsl:value-of select="Name/@First"/>
        </xsl:element>
  </xsl:template>
     
  </xsl:stylesheet>
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey50.xml
  
  Index: idkey50.xml
  ===================================================================
  <?xml version="1.0"?>
  <Tree>
  <Level1 ID="id1">
        <Name First="Lee" MI="R" Last="Smith">Lee</Name>
        <Age>70</Age>
        <Level2 ID="id2">
                <Name First="Amby" MI="A" Last="Smith">Amby</Name>
                <Age>46</Age>
  
                <Level3 ID="id6">
                        <Name First="Julie" MI="A" Last="Smith">Jules</Name>
                        <Age>9</Age>
                </Level3>
                <Level3 ID="id9">
                        <Name First="Daniel" MI="L" Last="Smith">Daniel</Name>
                        <Age>8</Age>
                </Level3>
        </Level2>
        <Level2 ID="id3">
                <Name First="Ted" MI="R" Last="Smith">Ted</Name>
                <Age>45</Age>
                <Level3 ID="id8">
                        <Name First="Joshua" MI="R" Last="Smith">Joshua</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id11">
                        <Name First="Lauren" MI="R" Last="Smith">Lauren</Name>
                        <Age>5</Age>
                </Level3>
        </Level2>
        <Level2 ID="id4">
                <Name First="Pedro" MI="Q" Last="Smith">Pedro</Name>
                <Age>43</Age>
                <Level3 ID="id7">
                        <Name First="Nathaniel" MI="Q" Last="Smith">Nate</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id10">
                        <Name First="Samual" MI="Q" Last="Smith">Sam</Name>
                        <Age>7</Age>
                </Level3>
        </Level2>
        <Level2 ID="id5">
                <Name First="Pablo" MI="E" Last="Smith">Pablo</Name>
                <Age>41</Age>
                <Level3 ID="id12">
                        <Name First="Benjamin" MI="D" Last="Smith">Ben</Name>
                        <Age>5</Age>
                </Level3>
                <Level3 ID="id13">
                        <Name First="Lucy" MI="E" Last="Smith">Lucy</Name>
                        <Age>2</Age>
                </Level3>
                <Level3 ID="id14">
                        <Name First="Jake" MI="E" Last="Smith">Jake</Name>
                        <Age>1</Age>
                </Level3>
        </Level2>
        <Level3 ID="id15">
                <Name First="Jeffery" MI="Q" Last="Smith">Jeff</Name>
                <Age>36</Age>
                <Level3 ID="id16">
                        <Name First="Christopher" MI="Q" 
Last="Smith">Chris</Name>
                        <Age>8</Age>
                </Level3>
                <Level3 ID="id17">
                        <Name First="Jabriella" MI="Q" 
Last="Smith">Jabriella</Name>
                        <Age>8</Age>
                </Level3>
        </Level3>
  </Level1>
  <Level2 ID="id18">
        <Name First="Melvin" MI="R" Last="Gaas">Mel</Name>
        <Age>80</Age>
        <Level3 ID="id19">
                <Name First="Robert" MI="A" Last="Gaas">Bob</Name>
                <Age>52</Age>
  
                <Level3 ID="id20">
                        <Name First="Eric" MI="A" Last="Gaas">Eric</Name>
                        <Age>19</Age>
                </Level3>
                <Level3 ID="id21">
                        <Name First="Johnathan" MI="L" Last="Gaas">John</Name>
                        <Age>8</Age>
                </Level3>
        </Level3>
  </Level2>
  <childnodeset>
        <id>id6</id>
        <id>id7</id>
        <id>id8</id>
        <id>id9</id>
        <id>id10</id>
        <id>id11</id>
        <id>id12</id>
        <id>id13</id>
        <id>id14</id>
        <id>id15</id>
  </childnodeset>
  <parentnodeset>
        <id>id2</id>
        <id>id3</id>
        <id>id4</id>
        <id>id5</id>
        <id>id15</id>
        <id>id19</id>
  </parentnodeset>
  <grandparent>
        <id>id1</id>
        <id>id18</id>
  </grandparent>
  </Tree>
  
  
  
  
  1.1                  xml-xalan/test/tests/conf/idkey/idkey50.xsl
  
  Index: idkey50.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  
    <!-- FileName: idkey50 -->
    <!-- Document: http://www.w3.org/TR/xslt -->
    <!-- DocVersion: 19991116 -->
    <!-- Section: 5.2 -->
    <!-- Creator: Paul Dick -->
    <!-- Purpose: Test complex key(name,variable)//x/x filtered by a complex 
           predicate in a match pattern. -->
  
  
  <xsl:key name="Info" match="Level1 | Level2" use="@ID"/>
  <xsl:variable name="testset" select="/Tree/grandparent/id"/>
  
  <xsl:template match="/">
   <out>
        <xsl:apply-templates select="//Level3"/>
   </out>
  </xsl:template>
  
  <xsl:template 
match="key('Info',$testset)//Level3/Level3[Name[starts-with(@First,'J')]][Age='8']">
        <xsl:text>&#10;</xsl:text>
        <xsl:element name="J-Name8">
                <xsl:value-of select="Name/@First"/>
        </xsl:element>
  </xsl:template>
  
  <xsl:template match="*">
        <xsl:text>&#10;</xsl:text>
        <xsl:element name="Name">
                <xsl:value-of select="Name/@First"/>
        </xsl:element>
  </xsl:template>
     
  </xsl:stylesheet>
  
  

Reply via email to