Re: [xsl] problem with key

Subject: Re: [xsl] problem with key
From: "David Maus lists@xxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 12 Apr 2021 05:20:20 -0000
On Mon, 12 Apr 2021 06:08:46 +0200,
Albright, Jim jim_albright@xxxxxxxxxxxx wrote:
> 
> [1  <text/plain; UTF-8 (7bit)>]
> [2  <text/html; UTF-8 (quoted-printable)>]
> I am trying to upconvert from a flat-file. After I get it into XML form I try to add hierarchy using "key".
> -------------
> OUTPUT 
> ------------- 
> I get NO results from 
> <SubPossibilities>
>             <xsl:copy select="key('SemanticDomainByParent', '$parentSD')"/>
> </SubPossibilities>

The quotes around $parentSD look wrong. You are looking up elements
under the string key '$parentSD'.

I think it should read:

<xsl:copy select="key('SemanticDomainByParent', $parentSD)"/>

HTH,
  -- David

> 
> so output looks like
> <SubPossibilities/>
> 
> So what am I doing wrong?
> 
> Starting with this XML
> -------------
> XML input 
> ------------- 
> 
> ...      <Possibilities>
>          <CmSemanticDomain level="1"      sd="1"   parent=""         guid="I63403699-07C1-43F3-A47C-069D6E4316E5">
>             <line tag="sd">Universe, creation</line>
>             <line tag="gd">I63403699-07C1-43F3-A47C-069D6E4316E5</line>
>          </CmSemanticDomain>
>          <CmSemanticDomain level="2"  sd="1.1"   parent="1"    guid="I999581C4-1611-4ACB-AE1B-5E6C1DFE6F0C">
>                <line tag="sd">Sky</line>
>                <line tag="gd">I999581C4-1611-4ACB-AE1B-5E6C1DFE6F0C</line>
>           </CmSemanticDomain>
>          <CmSemanticDomain level="3"   sd="1.1.1"    parent="1.1"    guid="IDC1A2C6F-1B32-4631-8823-36DACC8CB7BB">
>             <line tag="sd">Sun</line>
>             <line tag="gd">IDC1A2C6F-1B32-4631-8823-36DACC8CB7BB</line>
>          </CmSemanticDomain>
>          <CmSemanticDomain level="4"  sd="1.1.1.1"    parent="1.1.1"      guid="I1BD42665-0610-4442-8D8D-7C666FEE3A6D">
>             <line tag="sd">Moon</line>
>             <line tag="gd">I1BD42665-0610-4442-8D8D-7C666FEE3A6D</line>
>          </CmSemanticDomain>
>          <CmSemanticDomain level="4"  sd="1.1.1.2"  parent="1.1.1"  guid="IB044E890-CE30-455C-AEDE-7E9D5569396E">
>             <line tag="sd">Star</line>
>             <line tag="gd">IB044E890-CE30-455C-AEDE-7E9D5569396E</line>
>          </CmSemanticDomain>
>          <CmSemanticDomain level="4"  sd="1.1.1.3"   parent="1.1.1"    guid="IA0D073DF-D413-4DFD-9BA1-C3C68F126D90">
>             <line tag="sd">Planet</line>
>             <line tag="gd">IA0D073DF-D413-4DFD-9BA1-C3C68F126D90</line>
>          </CmSemanticDomain>
> 
> ...
> -------------
> XSL 
> ------------- 
> ...
>   <xsl:key name="SemanticDomainByParent" match="CmSemanticDomain" use="@parent" />
>     
>     <xsl:template match="CmSemanticDomain">
>         <CmSemanticDomain>
>             <xsl:apply-templates select="@* | node()"/>
>             <xsl:apply-templates select="key('SemanticDomainByParent',@sd)"/>
>         </CmSemanticDomain>
>     </xsl:template>
>     
>     <xsl:template match="line[@tag='gd']">
>         <xsl:variable name="parentSD" select="parent::*/@parent"/>   
>         <SubPossibilities>
>             <xsl:copy select="key('SemanticDomainByParent', '$parentSD')"/>
>         </SubPossibilities>
>     </xsl:template>
>     
>     <!-- identity transform -->
>     <xsl:template match="@* | node()">
>         <xsl:copy>
>             <xsl:apply-templates select="@* | node()"/>
>         </xsl:copy>
>     </xsl:template>
>     
>   
> -------------
> Desired OUTPUT 
> ------------- 
> ...
>       <Possibilities>
>          <CmSemanticDomain level="1"      sd="1"   parent=""         guid="I63403699-07C1-43F3-A47C-069D6E4316E5">
>                <line tag="sd">Universe, creation</line>
>                <SubPossibilities>
>                   <CmSemanticDomain level="2"  sd="1.1"   parent="1"    guid="I999581C4-1611-4ACB-AE1B-5E6C1DFE6F0C">
>                        <line tag="sd">Sky</line>
>                       <SubPossibilities> 
>                           <CmSemanticDomain level="3"   sd="1.1.1"    parent="1.1"    guid="IDC1A2C6F-1B32-4631-8823-36DACC8CB7BB">
>                               <line tag="sd">Sun</line>
>                               <SubPossibilities>       
>                                   <CmSemanticDomain level="4"  sd="1.1.1.2"  parent="1.1.1"  guid="IB044E890-CE30-455C-AEDE-7E9D5569396E">
>                                       <line tag="sd">Star</line>
>                                   </CmSemanticDomain>
>                                   <CmSemanticDomain level="4"  sd="1.1.1.3"   parent="1.1.1"    guid="IA0D073DF-D413-4DFD-9BA1-C3C68F126D90">
>                                        <line tag="sd">Planet</line>
>                                  </CmSemanticDomain>      
> ...
>                              </SubPossibilities>
>                          </CmSemanticDomain>
>                       </SubPossibilities>
>                   </CmSemanticDomain>
>               </SubPossibilities>
>           </CmSemanticDomain>
>       </Possibilities>   
> 
> Jim Albright
> Wycliffe Bible Translators
> 704-562-1529
> XSL-List info and archive 
> EasyUnsubscribe (by email) 

-- 
David Maus M.A.

Www: http://dmaus.name
Twitter: @_dmaus

Current Thread