[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
RE: [xsl] referring to variables using variables?
Subject: RE: [xsl] referring to variables using variables? From: "Michael Kay" <mhk@xxxxxxxxx> Date: Tue, 13 Jan 2004 13:35:40 -0000 |
> Thanks very much for your help so far, just wanted to make > absolutely sure i > understand the select statement in the for-each element > select="xx:node-set($index)/*", does it mean that every > variable in index is > a node and if so why do you have to do that? A variable created using <xsl:variable> content </xsl:variable> is called (in XSLT 1.0) a "result tree fragment". It is actually a document root node, but with restrictions that stop you processing it in the same way as you can process other documents. The xx:node-set() extension, which is available in most XSLT 1.0 processors under one namespace or another, converts this restricted document node into a node-set containing an ordinary document root node, which therefore allows you to poke around inside the content of the document using path expressions. Such as xx:node-set($index)/*, for example, which selects the element children of this document root node. Michael Kay > Are there any good web pages where i could find out more > about advanced xslt > functions which would help me to understand setting up > variables in this > way? Whenever i come across a problem i tend not to know > where to look for > solutions so i always end up asking on here as i have a > limited experience, > does anyone know any really good sites or books that might > help me? cheers james walker > > > >From: "Michael Kay" <mhk@xxxxxxxxx> > >Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > >To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> > >Subject: RE: [xsl] referring to variables using variables? > >Date: Mon, 12 Jan 2004 20:20:29 -0000 > > > >I would suggest: > > > ><xsl:variable name="index"> > > <foobar>http:......</foobar> > > <jaka>http:....</jaka> > ></xsl:variable> > > > ><xsl:variable name="nsindex" select="xx:node-set($index)/*"/> > > > ><xsl:template match="category"> > > <xsl:variable name="catname" select="name" /> > > > > <xsl:for-each > >select="document($nsindex/*[name()=$catname])/root/child::*)"> > > > >Michael Kay > > > > > > > > > -----Original Message----- > > > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of james > > > walker > > > Sent: 12 January 2004 16:15 > > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > > Subject: RE: [xsl] referring to variables using variables? > > > > > > > > > > > > Is there anyway that i can achieve the same solution but in a > > > slightly different way? > > > > > > thanks james walker > > > > > > > > > >From: "Michael Kay" <mhk@xxxxxxxxx> > > > >Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > > >To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> > > > >Subject: RE: [xsl] referring to variables using variables? > > > >Date: Mon, 12 Jan 2004 15:51:08 -0000 > > > > > > > >XSLT is not a macro language. The content of a variable > is a value > > > >(either a boolean, a string, a number, or a node-set). It is > > > not part > > > >of the text of an XPath expression. I think this is where your > > > >confusion comes from. > > > > > > > >For example, if $x contains the string 'xyz', then $x/pqr > > > does not mean > > > >xyz/pqr, it means 'xyz'/pqr, which is an error: the operands > > > of the "/" > > > >operator must be node-sets, not strings. > > > > > > > >Michael Kay > > > > > > > > > -----Original Message----- > > > > > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > > > > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > > > > > james walker > > > > > Sent: 12 January 2004 13:56 > > > > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > > > > Subject: [xsl] referring to variables using variables? > > > > > > > > > > > > > > > I am trying to access different xml documents where > the variable > > > > > name of the document (declared at the top of the file) is > > > equal to > > > > > the category name of > > > > > the file being translated: > > > > > e.g. given this xslt: > > > > > > > > > > <xsl:stylesheet version="1.0" > > > > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > > > > <xsl:variable name="jaka" select="document('http:......')" /> > > > > > <xsl:variable name="foobar" > select="document('http:......')" /> > > > > > > > > > > <xsl:template match="category"> > > > > > <xsl:variable name="catname" select="name" /> <xsl:for-each > > > > > select="$catname/root/child::*)"> <li><xsl:value-of > > > > > select="detail" /></li> </xsl:for-each> <xsl:apply-templates > > > > > select="./category" /> </xsl:template> </xsl:stylesheet> > > > > > > > > > > I translated this with file1.xml which contained the two > > > > > category names jaka aand foobar. i have named the > categories in > > > the file1.xml > > > > > to be $foobar and > > > > > $jaka so when $catname is substitued into > > > > > $catname/root/child::* it should > > > > > look like $foobar/root/child::* for foobar categoyr and > > > > > $jaka/root/child::* > > > > > for jaka category. > > > > > > > > > > However, when i translate it, it doesnt seem to show > > > anything when > > > > > it gets to the xpath staement $catname/root/child::*. > > > > > I tested to see if it works when u put the variable name > > > > > directly in there and it does (e.g. putting > > > > > $foobar/root/child::* )?? Does anyone know if i am > close to the > > > > > solution (am i making a silly mistake > > > > > with variable decalration?0 > > > > > cheers > > > > > james walker > > > > > > > > > > > ________________________________________________________________ > > > > > _ > > > > > Express yourself with cool emoticons - download MSN > > > Messenger today! > > > > > http://www.msn.co.uk/messenger > > > > > > > > > > > > > > > XSL-List info and archive: > > > > > http://www.mulberrytech.com/xsl/xsl-list > > > > > > > > > > > > > > > > > XSL-List info and archive: > > > http://www.mulberrytech.com/xsl/xsl-list > > > > > > > > > > > > > _________________________________________________________________ > > > Find a cheaper internet access deal - choose one to suit you. > > > http://www.msn.co.uk/internetaccess > > > > > > > > > XSL-List info and archive: > > > http://www.mulberrytech.com/xsl/xsl-list > > > > > > > > > XSL-List info and archive: > http://www.mulberrytech.com/xsl/xsl-list > > > > > _________________________________________________________________ > It's fast, it's easy and it's free. Get MSN Messenger today! > http://www.msn.co.uk/messenger > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] referring to variables us, Michael Kay | Thread | RE: [xsl] referring to variables us, james walker |
RE: [xsl] referring to variables us, Michael Kay | Date | RE: [xsl] referring to variables us, Michael Kay |
Month |