?
Solved

xsl:include

Posted on 2000-04-10
7
Medium Priority
?
713 Views
Last Modified: 2013-11-18
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.
0
Comment
Question by:fwickes
  • 3
  • 3
7 Comments
 
LVL 27

Expert Comment

by:BigRat
ID: 2709498
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.
0
 

Author Comment

by:fwickes
ID: 2709541
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
0
 
LVL 27

Expert Comment

by:BigRat
ID: 2709792
Providing the path to animal2.xsl is correct and your last comment also holds then - yes.
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 

Author Comment

by:fwickes
ID: 2709854
.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?
0
 
LVL 27

Expert Comment

by:BigRat
ID: 2713685
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).
0
 
LVL 1

Accepted Solution

by:
sistudio041900 earned 200 total points
ID: 2730471
Look at: http://msdn.microsoft.com/xml/xslguide/conformance.asp

* "Import/Include (section 2.8). Workaround: Include can be simulated with external entities."

I checked all the possibile things with MSXML3 and there is no way! import and include just dont work in MSXML3 march release. So you need to use other means or other tools. Sorry for not giving the direct solution but this is answer to the question/problem.

you are not doing anything wrong. I copied the W3C example code and checked. MSXML3 just done have xsl:include

workaround: I wrote an commandline xsl-converter (10 lines of Delphi code, uses msxml3) that converter can be modifiled to support include file, ie the commandline tool would read al the xsl, check for include, merge and run MSXML3





0
 

Author Comment

by:fwickes
ID: 2732315
Thank you!
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article covers the basics of the Sass, which is a CSS extension language. You will learn about variables, mixins, and nesting.
Without even knowing it, most of us are using web applications on a daily basis.  In fact, Gmail and Yahoo email, Twitter, Facebook, and eBay are used by most of us daily—and they are web applications. We generally confuse these web applications to…
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.
Suggested Courses

850 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question