|
Subject: Re: [xsl] problem with key From: "Albright, Jim jim_albright@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 14 Apr 2021 22:28:27 -0000 |
In thinking about this, it looks like this can be written as a recursive
routine. Is this correct?
Right now I run a batch file and increment the level for each step.
Jim Albright
Wycliffe Bible Translators
704-562-1529
On Wed, Apr 14, 2021 at 4:48 PM Albright, Jim jim_albright@xxxxxxxxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
> Thank you David and Dimitre,
>
> You are both right. Thank you. I would have responded sooner but it took
> me some time to find a bug that caused the file to grow. I now pass a
> /level/ parameter to facilitate deleting duplicates. Here is working XSLT
>
> <xsl:param name="level"></xsl:param>
> <xsl:output method="xml" indent="yes" />
> <xsl:variable name="lookupDoc" select="document('step2.xml')"/>
>
> <xsl:key name="SemanticDomainByParent" match="CmSemanticDomain"
> use="@parent" />
>
> <xsl:template match="CmSemanticDomain[@level=$level]"/>
>
> <xsl:template match="line[@tag='gd']">
> <xsl:variable name="parentSD" select="parent::*/@sd"/>
> <SubPossibilities>
> <xsl:copy-of select="key('SemanticDomainByParent', $parentSD,
> $lookupDoc)"/>
> </SubPossibilities>
> </xsl:template>
>
> <!-- identity transform -->
> <xsl:template match="@* | node()">
> <xsl:copy>
> <xsl:apply-templates select="@* | node()"/>
> </xsl:copy>
> </xsl:template>
>
> I ended up building the hierarchy one transformation at a time. The
> inserted text has tag = 'gd' which triggers the insertion the next time
> around. So multiple application of the same XSL does the trick.
>
> I started by creating a file with just the 0 level of hierarchy. I then
> inserted the correct information from an external file at the correct
> location. There may be easier ways of doing this. But this is something
> that I can explain fairly easily to novices. You continue until you have
> processed all the levels.
>
> Thank you again for your help.
>
> Jim Albright
> Wycliffe Bible Translators
> 704-562-1529
>
>
> On Mon, Apr 12, 2021 at 1:20 AM David Maus lists@xxxxxxxxxx <
> xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
>> 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
>>
>>
>> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/2835196> (by
> email <>)
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] problem with key, Albright, Jim jim_al | Thread | Re: [xsl] problem with key, Martin Honnen martin |
| Re: [xsl] problem with key, Albright, Jim jim_al | Date | [xsl] Same Indent in converted outp, Byomokesh Sahoo saho |
| Month |