|
Subject: Re: [xsl] Re: Defining a Variable that depends on an unknown number of conditions From: "Andrew Ferk" <andrewferk@xxxxxxxxx> Date: Thu, 1 Jan 2009 19:40:31 -0600 |
> OK. I'm trying to determine if element_x or element_y contain the
> value value_m or value_n.
> I believe I'm close, but can't figure out what to replace ____________ with.
> I tried current()/../@on and ./../@on but no luck.
>
> Thanks. Below is a quick mock-up of files.
>
> I have xml_a.xml as so:
> <xml_a>
> <depends>
> <depend on="element_x" equals="value_m|value_n"/>
> <depend on="element_y" equals="value_m|value_n"/>
> </depends>
> </xml_a>
>
> and xml_b.xml:
> <xml_b>
> <element_x>value_m</element_x>
> <element_y>value_p</element_y>
> </xml_b>
>
> finally transform.xsl, that opens xml_b.xml and transforms xml_a.xml.
> <xsl:variable name="xml_b" select="document('xml_b.xml')/xml_b"/>
> <xml:template select="xml_a">
> <xsl:variable name="my_test" select =
> "depends/depend/@equals[contains(.,$xml_b/*[name()=__________])]"/>
> </xml:template>
I solved my problem using a recursive template.
<xsl:variable name="xml_b" select="document('xml_b.xml')/xml_b"/>
<xsl:template name="loop">
<xsl:param name="loop_variable">1</xsl:param>
<xsl:parram name="attr_on">
<xsl:value-of select="depends/depend[position()=$loop_variable]/@on"/>
</xsl:param>
<xsl:param name="attr_equals">
<xsl:value-of select="depends/depend[position()=$loop_variable]/@equals"/>
</xsl:param>
<xsl:choose>
<xsl:when test="$attr_on = ''">yes</xsl:when>
<xsl:when test="$xml_b/*[name()=$attr_on] = ''">
<xsl:call-template name="depends">
<xsl:with-param name="loop_variable" select="$loop_variable + 1"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="contains($attr_equals,
$xml_b/*[name()=$attr_on])">no</xsl:when>
<xsl:otherwise>
<xsl:call-template name="depends">
<xsl:with-param name="loop_variable" select="$loop_variable + 1"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template select="xml_a">
<xsl:variable name="my_test">
<xsl:call-template name="loop"/>
</xsl:variable>
</xsl:template>
--
Andrew Ferk
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Re: Defining a Variable t, Andrew Ferk | Thread | RE: [xsl] Regex and apply xsl numbe, Byomokesh Sahoo |
| Re: [xsl] Re: ANN: A static code qu, Dimitre Novatchev | Date | Re: [xsl] Re: ANN: A static code qu, Mukul Gandhi |
| Month |