Jump to content

Attaching Attributes

Recommended Posts

Let's say you want to generate a set of divs like this—

<div class="specialDiv" id="uniqueId1" onclick="clickFunction('uniqueId1', 'uniqueId2');" onmouseover="mouseFunction('uniqueId1', 'uniqueId2');" onmouseout="mouseFunction('uniqueId2', 'uniqueId1');">text</div><div class="specialDiv" id="uniqueId2" onclick="clickFunction('uniqueId2', 'uniqueId1');" onmouseover="mouseFunction('uniqueId2', 'uniqueId1');" onmouseout="mouseFunction('uniqueId1', 'uniqueId2');">text</div>

—from an XML document that uses the same tags for both divs. I'm aware that this is possible to do (example), and I have managed to get it working that far, but the problem lies in something else: I can't get the attributes to carry over with the tags. Placing an XSLT tag (xsl:copy-of, xsl:value-of…) inside the div where the attributes would be causes an error, and using </> for the div turns the HTML to standard text. I've tried messing around with xsl:variable and xsl:element, too, without success on either attempts. What am I missing?

Edited by BlueDigit
Link to post
Share on other sites
You have posted a fragment of the output you want to create but you have not shown the input. Please show is the input you want to create the output from.
'K, then.XML:
<?xml version="1.0" encoding="UTF-16"?><?xml-stylesheet type="text/xsl" href="C:\Documents and Settings\admin\My Documents\Web pages\test.xsl"?><base	xmlns:xlink="http://www.w3.org/1999/xlink"><listUnit>	<displayTitle>Test 1</displayTitle>	<cssTitle>games</cssTitle>	<ecmaTitle>games</ecmaTitle>	<indexNumber>0</indexNumber>	<content>		<listGroup sorter="0">			<linkUnit>				<linkText>Test Link 1</linkText>				<linkTo>http://www.neopets.com/</linkTo>				<sorter>0</sorter>			</linkUnit>			<linkUnit>				<linkText>Test Link 3</linkText>				<linkTo>http://www.neopets.com/</linkTo>				<sorter>2</sorter>			</linkUnit>			<linkUnit>				<linkText>Test Link 2</linkText>				<linkTo>http://www.neopets.com/</linkTo>				<sorter>1</sorter>			</linkUnit>		</listGroup>	</content></listUnit><listUnit>	<displayTitle>Test 2</displayTitle></listUnit></base>


<?xml version="1.0" encoding="UTF-16"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">	<xsl:output		method="html"		version="4.0"		encoding="UTF-16"		omit-xml-declaration="no"		doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"		doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"		media-type="text/xml"	/>	<xsl:param name="listUnitGroup" select="2" />	<xsl:param name="displayTitleGroup" />	<xsl:param name="cssTitleGroup" />	<xsl:param name="ecmaTitleGroup" />	<xsl:param name="linkGroup" /><xsl:template match="base"><html	lang="en"	dir="ltr"	xml:lang="en"	xmlns="http://www.w3.org/1999/xhtml">	<head>		<title>Test Portal</title>		<meta charset="UTF-16" />		<meta http-equiv="Content-Type" content="text/html; charset=UTF-16" />		<meta http-equiv="Date" content="22-01-2010" scheme="DD-MM-YYYY" />		<meta http-equiv="Last-Modified" content="22-01-2010" scheme="DD-MM-YYYY" />		<link			href="…"			type="text/css"			rel="stylesheet"		/>	</head>	<body>		<div style="border: 5px solid #000000;">			<xsl:apply-templates select="listUnit[(position() mod $listUnitGroup) = 1]" />		</div>	</body></html></xsl:template><xsl:template match="listUnit">	<xsl:variable name="id">	id="<xsl:value-of select="ecmaTitle" />"	</xsl:variable>	<xsl:variable name="headBgCon">	onmouseover="headBgCon('<xsl:value-of select="ecmaTitle" />', 1);" onmouseout="headBgCon('<xsl:value-of select="ecmaTitle" />', 2);"	</xsl:variable>	<xsl:variable name="boxConO">	onclick="boxCon('<xsl:value-of select="ecmaTitle" />Content', '<xsl:value-of select="ecmaTitle" />Header');"	</xsl:variable>	<xsl:variable name="boxConC">	onclick="boxCon('<xsl:value-of select="ecmaTitle" />Header', '<xsl:value-of select="ecmaTitle" />Content');"	</xsl:variable>	<xsl:for-each select=". | following-sibling::listUnit[position() < $listUnitGroup]">	<div class="ocBox_container">		<div class="ocBox_headerContain" <xsl:copy-of select="$id" />>			<div class="ocBox_header" <xsl:copy-of select="$headBgCon" /> <xsl:copy-of select="$boxConO" />>		<span style="font-weight: bold"><xsl:value-of select="displayTitle" /></span><br />			</div>		</div>	</div>	</xsl:for-each></xsl:template></xsl:stylesheet>

Ignore the unused elements and extra parameters, they're for after I get the basics working.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...