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] > 17]" priority="2">
<xsl:text> </xsl:text>
<big><xsl:value-of select="../@id"/></big>
</xsl:template>
<xsl:template match="r" priority="1">
<xsl:text> </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] > 17]" priority="2">
<xsl:text> </xsl:text>
<bigD><xsl:value-of select="../@id"/></bigD>
</xsl:template>
<xsl:template match="[EMAIL PROTECTED] > 17]">
<xsl:text> </xsl:text>
<big><xsl:value-of select="../@id"/></big>
</xsl:template>
<xsl:template match="r">
<xsl:text> </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] > 17]">
<xsl:text> </xsl:text>
<big><xsl:value-of select="../@id"/></big>
</xsl:template>
<xsl:template match="r">
<xsl:text> </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> </xsl:text>
</out>
</xsl:template>
<xsl:template match="id('id6')/text()">
<xsl:text> </xsl:text>
<bee><xsl:value-of select="../@id"/></bee>
</xsl:template>
<xsl:template match="text()">
<xsl:text> </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> </xsl:text>
</out>
</xsl:template>
<xsl:template match="id('id2')//text()">
<xsl:text> </xsl:text>
<x><xsl:value-of select="../@id"/></x>
</xsl:template>
<xsl:template match="text()">
<xsl:text> </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> </xsl:text>
</out>
</xsl:template>
<xsl:template match="id('id2')/*[name()='b']/text()" priority="2">
<xsl:text> </xsl:text>
<bee><xsl:value-of select="../@id"/></bee>
</xsl:template>
<xsl:template match="id('id2')//text()">
<xsl:text> </xsl:text>
<x><xsl:value-of select="../@id"/></x>
</xsl:template>
<xsl:template match="text()">
<xsl:text> </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> </xsl:text>
</out>
</xsl:template>
<xsl:template match="id($pick)/*[name()=$major]/text()" priority="2">
<xsl:text> </xsl:text>
<bee><xsl:value-of select="../@id"/></bee>
</xsl:template>
<xsl:template match="id($pick)//text()">
<xsl:text> </xsl:text>
<x><xsl:value-of select="../@id"/></x>
</xsl:template>
<xsl:template match="text()">
<xsl:text> </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> </xsl:text>
<xsl:element name="J-Name">
<xsl:value-of select="Name/@First"/>
</xsl:element>
</xsl:template>
<xsl:template match="*">
<xsl:text> </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> </xsl:text>
<xsl:element name="J-NAME">
<xsl:value-of select="Name/@First"/>
</xsl:element>
</xsl:template>
<xsl:template match="*">
<xsl:text> </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> </xsl:text>
<xsl:element name="Simple-Match">
<xsl:value-of select="Name/@First"/>
</xsl:element>
</xsl:template>
<xsl:template match="*">
<xsl:text> </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> </xsl:text>
<xsl:element name="Simple-Match">
<xsl:value-of select="Name/@First"/>
</xsl:element>
</xsl:template>
<xsl:template match="*">
<xsl:text> </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> </xsl:text>
<xsl:element name="Complex-Match">
<xsl:value-of select="Name/@First"/>
</xsl:element>
</xsl:template>
<xsl:template match="*">
<xsl:text> </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> </xsl:text>
<xsl:element name="J-Name">
<xsl:value-of select="Name/@First"/>
</xsl:element>
</xsl:template>
<xsl:template match="*">
<xsl:text> </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> </xsl:text>
<xsl:element name="J-Name8">
<xsl:value-of select="Name/@First"/>
</xsl:element>
</xsl:template>
<xsl:template match="*">
<xsl:text> </xsl:text>
<xsl:element name="Name">
<xsl:value-of select="Name/@First"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>