xsl-list
[Top] [All Lists]

Re: [xsl] Nodeset problem

2007-08-15 09:58:35
On 7/20/07, andy white <andy_p_white(_at_)yahoo(_dot_)co(_dot_)uk> wrote:
Hi All,

Being new to xsl, this has me completly befuzzled - either that or my brain
gave up and went on holiday!  - so any help would be greatly appreciated.

I have an XML file that I'm parsing that has many entries of data.  I can
happily extract the data but I need to validate certain components of it.

The problem is that what I need to validate against is data contained within
another file (containing lookup data if you like):

<Groups>
<Company ID='000011'>
<Foo ID='01234567'/>
<Foo ID='13123123'/>
<Foo ID='1232132'/>
<Foo ID='55534332'/>
</Company>
<Company ID='000131'>
<Foo ID='23423432'/>
<Foo ID='23236543'/>
<Foo ID='0043543'/>
</Company>
</Groups>

So, if I grab the string 0043543 from the original XML I need to compare it
with the lookup to see if it exists.  If it does then I do nothing,
otherwise I record a failure entry.  (The check should be against any
company - it's simply to see if the string exists <anywhere> in the above
file)

The stylesheet I'm calling with the original data is:

    <xsl:variable name="lookupfile" select="lookup.xml'"/>
    <xsl:variable name="foonodes" select="document($lookupfile)"/>

    <xsl:key name="list" match="entry" use="Foo_Number"/>

    <xsl:template match="/">
        <FooValidator>

        <xsl:for-each
select="/doc/entry[generate-id(.)=generate-id(key('list',Foo_Number))]">
            <xsl:variable name="foo" select="Foo_Number"/>

            <!-- Call foocomparison to see if "foo" exists in lookup file
(nodes) -->
            <xsl:call-template name="foocomparison">
                <xsl:with-param name="foo" select="$foo"/>
                <xsl:with-param name="foolist" select="$nodes"/>
            </xsl:call-template>
        </xsl:for-each>

        </FooValidator>
    </xsl:template>


    <xsl:template name="foocomparison">
        <xsl:param name="foo" select="normalize-space(.)"/>
        <xsl:param name="foolist"/>

        <xsl:choose>

            <!--
            <xsl:when test="not(string-length($mid)=0) and
$foolist[contains(.,$foo)]">
                <xsl:text>Valid FOO</xsl:text>
            </xsl:when>
            <xsl:otherwise>
                <Invalid>
                    <xsl:text>Error: FOO doesn't exist: </xsl:text>
                    <foo><xsl:value-of select="$mid"/></foo>
                </Invalid>
            </xsl:otherwise>
            -->

            <xsl:when test="not(string-length($foo)=0) and
contains($foolist,$foo)">
                <xsl:text>Valid FOO</xsl:text>
            </xsl:when>
            <xsl:otherwise>
                <Invalid>
                    <xsl:text>Error : FOO doesn't exist </xsl:text>
                    <foo><xsl:value-of select="$foo"/></foo>
                </Invalid>
            </xsl:otherwise>

        </xsl:choose>
    </xsl:template>


But this just always gives me Error:... even if the value I pass in exists
anywhere in the lookup file :(

I'm guessing that the $nodes variable is rubbish and not doing what I think
it should?

Is this complete nonsense?  Or am I going insane?    Laaaa la la de dee di
dum  - yup   :)

Thanks All,

Andy





      ___________________________________________________________
Yahoo! Mail is the world's favourite email. Don't settle for less, sign up
for
your free account today
http://uk.rd.yahoo.com/evt=44106/*http://uk.docs.yahoo.com/mail/winter07.html

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--
Jesper Tverskov

www.xmlkurser.dk
www.xmlplease.com

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>
  • Re: [xsl] Nodeset problem, Jesper Tverskov <=