xsl-list
[Top] [All Lists]

Re: check for existance of an element in the xml

2004-12-07 01:57:30
I underlined the change with "*".
The changed XSLT is:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
    <xsl:output method="html"/>

    <xsl:template match="/">
        <html>
            <head>
*                <xsl:if test="//input">
                   <script language="JavaScript" 
src="Shared/Javascript/validate.js"></script>
*                </xsl:if?
            </head>
            <body>   
                <xsl:apply-templates/>
            </body>
        </html>
    </xsl:template>
   
    <xsl:template match="input">
         <!-- input field code goes here -->
    </xsl:template>
    .
    .
    .
</xsl:stylesheet>


--- Jake The Snake Briggs <jakbri(_at_)coretech(_dot_)co(_dot_)nz> wrote:

HI all
I would to check for the existance of an element, and act upon it, 
rather than act everytime the element is matched. What i mean is I have 
xml that describes how a web page looks, and an xsl that transforms that 
to html and javascript.

For example, i may have this :

<page>
    <groupbox x="10" y="10">
        <text value="Blaa Blaa" x="10" y="10"/>
        <input x="10" y="20" name="foo"/>
    </groupbox>
   
    <groupbox x="10" y="30">
        <text value="Something Else" x="10" y="10"/>
        <input x="10" y="20" name="bar"/>
    </groupbox>
   
    <input x="10" y="50" name="gle"/>
</page>

The issue is that at the moment i have some javascript that operates on 
the input fields, so I am including it everytime I produce a page, but I 
want to only include it iff the xml has at least one <input .../> 
element. This is of course simplified, the real xml and the html it 
produces is a lot more complicated, some of the html pages produced are 
getting fairly large :)
The xsl root match is where i am including all the various javascript 
files. Here is a simplified version of my xslt, for those who dont do html :

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
    <xsl:output method="html"/>

    <xsl:template match="/">
        <html>
            <head>
                <script language="JavaScript" 
src="Shared/Javascript/validate.js"></script>
            </head>
            <body>   
                <xsl:apply-templates/>
            </body>
        </html>
    </xsl:template>
   
    <xsl:template match="input">
         <!-- input field code goes here -->
    </xsl:template>
    .
    .
    .
</xsl:stylesheet>

I only want that <script language="JavaScript" 
src="Shared/Javascript/validate.js"></script> part to appear once in the 
resulting html iff the xml i am processing has at least one <input..../> 
element. I figure i can parse the xml twice, but i cant work out how i 
would only match unique elements the first time :) What sort of thing 
should i be googleing for in order to solve this problem, it seems like 
the sort of thing people would want to do....

Jake

--~------------------------------------------------------------------
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>
--~--




=====
Marian
http://www.utdallas.edu/~mgo031000/


                
__________________________________ 
Do you Yahoo!? 
Take Yahoo! Mail with you! Get it on your mobile phone. 
http://mobile.yahoo.com/maildemo 

--~------------------------------------------------------------------
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>
--~--