xsl-list
[Top] [All Lists]

RE: What is wrong with this xsl ?

2003-01-20 20:00:48
Please explain what your desired output is.  It is not clear from you xslt 
file.  I think you might be confusing the match and name in the xsl:template 
and not understanding namespaces.   You have defined the xsl as the namespace 
for the xsl language 

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 

Unless you source document is in xsl (it isn't) you should not place this 
namespace marker before elements that you wish to match that are not xsl.

match = "xsl:survey"

The only template you have supplied that can match the survey element is

<xsl:template match="*"/>

which will just remove it as you have seen.

match = "/xsl:survey/xsl:section"
match = "xsl:survey"

won't.

Edward Middleton

-----Original Message-----
From: Latha V. M. [mailto:latha_vm(_at_)yahoo(_dot_)com]
Sent: Tuesday, January 21, 2003 11:37 AM
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] What is wrong with this xsl ?


Hi,
I have the following xsl code:
<?xml version="1.0" encoding="UTF-8"?>

[lsunkara(_at_)ateserver ateserver2003]$ cat
XSLSource/SectionForm/split.xsl 
<xsl:stylesheet version="1.1"
       
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
       
xmlns:xhtml="http://www.w3.org/1999/TR/xhtml1/strict";>
<xsl:output method="xml" version="4.0"
encoding="UTF-8" indent="yes"/>

<xsl:template match = "/" >
        <xsl:apply-templates select = "survey" />
</xsl:template>

<xsl:template name="survey" match = "xsl:survey" >
        <survey>
                <xsl:copy-of select =
"/survey/surveyInfo"/>
                <xsl:call-template name = "section"/>
        </survey>
</xsl:template>

<xsl:template match = "/xsl:survey/xsl:section" name =
"section" >
        <xsl:variable name = "file" select = "@id" />
        <section sname = "{$file}" number =
"{position()}" href = "{$file}" />
        <xsl:document href = "{$file}" >
                <xsl:copy-of select =
"/survey/section" />
        </xsl:document>
</xsl:template>

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

</xsl:stylesheet> 
When I run this code as under it does not execute the
template for survey, it only executes the "/"
template.
#!/usr/bin/ksh
#This script uses the Xalan tool to translate a survey
section
#----------------------------------------------------------------------------------------
#LOCALCLASSPATH=/home/lsunkara/xmlold/xalan-j_1_2_2/xalan.jar:/home/lsunkara/xmlold/xalan-j_1_2_2/xerces.jar
LOCALCLASSPATH=/usr/java/xalan-j_2_4_0/bin/xalan.jar:/usr/java/xalan-j_2_4_0/bin/xercesImpl.jar:/usr/java/xalan-j_2_4_0/bin/xml-apis.jar
#----------------------------------------------------------------------------------------
XSL=XSLSource/SectionForm/split.xsl

INPUT=XMLSource/demo-survey.xml
OUTPUT=split1.xml

java -classpath $LOCALCLASSPATH
org.apache.xalan.xslt.Process -IN $INPUT -OUT $OUTPUT
-XSL $XSL -INDENT 2 -TT 

The xml looks like:
<survey>
<surveyInfo>
</surveyInfo>
<intro>
</intro>
<section id="test">
<question></question>
</section>
</survey>

=====
"Great minds have purposes, others have wishes."

__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>