Subject: Re: [xsl] XML Question From: LINKE Markus <markus.linke@xxxxxxxx> Date: Tue, 3 Oct 2006 17:27:34 -0500 (CDT) |
I think I missunderstood something ... I have this xml-file: <?xml-stylesheet type="text/xsl" href="xml2html.xsl"?> <a> <b> <c>ccc</c> </b> <d> <e>eee</e> </d> </a> and this stylesheet: <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl="urn:schemas-microsoft-com:xslt" > <xsl:output method="text"/> <xsl:variable name="theParmNodes" select="//namespace::*[local-name() = 'myNamespace']"/> <xsl:template match="/"> <xsl:variable name="theResult"> <xsl:for-each select="$theParmNodes"> <xsl:variable name="theNode" select="."/> <xsl:for-each select="$theNode | $theNode/ancestor-or-self::node()[..]"> <xsl:element name="slash">/</xsl:element> <xsl:choose> <xsl:when test="self::*"> <xsl:element name="nodeName"> <xsl:value-of select="name()"/> <xsl:variable name="thisPosition" select="count(preceding-sibling::*[name(current()) = name()])"/> <xsl:variable name="numFollowing" select="count(following-sibling::*[name(current()) = name()])"/> <xsl:if test="$thisPosition + $numFollowing > 0"> <xsl:value-of select="concat('[', $thisPosition + 1, ']')"/> </xsl:if> </xsl:element> </xsl:when> <xsl:otherwise> <!-- This node is not an element --> <xsl:choose> <xsl:when test="count(. | ../@*) = count(../@*)"> <!-- Attribute --> <xsl:element name="nodeName"> <xsl:value-of select="concat('@',name())"/> </xsl:element> </xsl:when> <xsl:when test="self::text()"> <!-- Text --> <xsl:element name="nodeName"> <xsl:value-of select="'text()'"/> <xsl:variable name="thisPosition" select="count(preceding-sibling::text())"/> <xsl:variable name="numFollowing" select="count(following-sibling::text())"/> <xsl:if test="$thisPosition + $numFollowing > 0"> <xsl:value-of select="concat('[', $thisPosition + 1, ']')"/> </xsl:if> </xsl:element> </xsl:when> <xsl:when test="self::processing-instruction()"> <!-- Processing Instruction --> <xsl:element name="nodeName"> <xsl:value-of select="'processing-instruction()'"/> <xsl:variable name="thisPosition" select="count(preceding-sibling::processing-instruction())"/> <xsl:variable name="numFollowing" select="count(following-sibling::processing-instruction())"/> <xsl:if test="$thisPosition + $numFollowing > 0"> <xsl:value-of select="concat('[', $thisPosition + 1, ']')"/> </xsl:if> </xsl:element> </xsl:when> <xsl:when test="self::comment()"> <!-- Comment --> <xsl:element name="nodeName"> <xsl:value-of select="'comment()'"/> <xsl:variable name="thisPosition" select="count(preceding-sibling::comment())"/> <xsl:variable name="numFollowing" select="count(following-sibling::comment())"/> <xsl:if test="$thisPosition + $numFollowing > 0"> <xsl:value-of select="concat('[', $thisPosition + 1, ']')"/> </xsl:if> </xsl:element> </xsl:when> <!-- Namespace: --> <xsl:when test="count(. | ../namespace::*) = count(../namespace::*)"> <xsl:variable name="apos">'</xsl:variable> <xsl:element name="nodeName"> <xsl:value-of select="concat('namespace::*', '[local-name() = ', $apos, local-name(), $apos, ']')"/> </xsl:element> </xsl:when> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:for-each> <xsl:text>
</xsl:text> </xsl:for-each> </xsl:variable> <xsl:value-of select="msxsl:node-set($theResult)"/> </xsl:template> </xsl:stylesheet> Initially I tried with the XSL-debugger of Oxygen, but that brought the error mentioned below; if I try it just with Internet Explorer I get no result at all (blank page). Did I forget a step? Cheers, Markus ----- Abel Braaksma <abel.online@xxxxxxxxx> wrote: > Markus, > > Depending on your processor, you can try: > > <xsl:value-of select="exslt:node-set($theResult)"/> > where you bind exslt (or whatever prefix you like) to > "http://exslt.org/common" > > <xsl:value-of select="saxon:node-set($theResult)"/> > where you bind saxon (or whatever prefix you like) to > "http://saxon.sf.net" (but I remember saxon supports exslt extensions, > so you can use the previous > > If you use a browser processor, the original should work like below, I > think (never tried it myself) when you are in IE, but when you are in > Gecko, you are out of luck, there is no node-set extension function > available in TransformIIX (the xslt parser for Gecko). In Opera: > please see a recent discussion on this list about the subject. > > In any case, best chances are that exslt nodeset will work. > > Cheers, > Abel Braaksma > http://www.nuntia.nl > > > > > LINKE Markus wrote: > > I've tried it but I receive an: > > > > SystemID: xxx.xsl > > Location: 98:0 > > Description: The URI urn:schemas-microsoft-com:xslt does not > identify an external Java class > > > > error message at this location: > > > > </xsl:variable> > > <xsl:value-of select="msxsl:node-set($theResult)"/> <!-- here > --> > > </xsl:template> > > > > ??? > > > > Thanks for your help! > > Markus
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XML Question, Abel Braaksma | Thread | Re: [xsl] XML Question, LINKE Markus |
Re: [xsl] XML Question, Abel Braaksma | Date | Re: [xsl] XML Question, LINKE Markus |
Month |