Link to home
Start Free TrialLog in
Avatar of fwickes
fwickes

asked on

xsl:include

Could someone please help me figure out where i'm going wrong. I have the following files:

animal.xml:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="animal.xsl"?>
<animal>
      <horse>
            <name>Mr Ed</name>
            <legs>4</legs>
      </horse>
      <monkey>
            <name>Curious George</name>
            <legs>2</legs>
      </monkey>
</animal>

animal.xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
      <xsl:template match="/">
            <xsl:apply-templates/>
      </xsl:template>      
      <xsl:template match="animal">
            <xsl:for-each select="horse | monkey">
                  <xsl:apply-templates/>
            </xsl:for-each>
      </xsl:template>
      <xsl:template match="name">
                  Name:<xsl:value-of/>
            <BR/>
      </xsl:template>
      <xsl:template match="legs">
                  Legs:<xsl:value-of/>
            <P/>
      </xsl:template>
</xsl:stylesheet>

Animal.xml will display as expected in IE5.0 with headings 'Name' and 'Legs' and corresponding data.
I want to add an xsl:include directive to my xsl doc (I'm putting it immediately after the xsl:stylesheet element). But I get the error:
Keyword xsl:include may not be used here.
If I change the xsl namespace to "http://www.w3.org/1999/XSL/transform" then I don't get the error, but my output is now just the titles 'Name' and 'Legs' and not the data .

Thank you.
Avatar of BigRat
BigRat
Flag of France image

The second namespace link (if it is at all used!) is ambiguous. The xsl:include MUST go in after the xsl:stylesheet element (so the spec). Are you sure that you got the xsl:include directive correct? Furthermore the include expects a complete stylesheet which it will parse and extract the children from the xsl:stylesheet element.
Avatar of fwickes
fwickes

ASKER

is this right?


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:include href="animal2.xsl"/>
.....
rest of xsl as above
.....


...where animal2.xsl is a valid well-formed xsl
Providing the path to animal2.xsl is correct and your last comment also holds then - yes.
Avatar of fwickes

ASKER

.so can you think a possible reason I get the error
"Keyword xsl:include may not be used here" ?? Could it just be that my parser(XSpy, IE5.0) doesn't support the include directive? If this is the case do you know of one that does?
I admit that the error message is strange "...not expected here"!? Since the spec says that it MUST be there and nowhere else. I don't know if it does support include (I'll try and find out), but you could try one last thing - try putting it BEFORE the stylesheet tag (just to see).
ASKER CERTIFIED SOLUTION
Avatar of sistudio041900
sistudio041900

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of fwickes

ASKER

Thank you!