[xsl] XSL with multiple levels

Subject: [xsl] XSL with multiple levels
From: "Adam Cohen" <random49k@xxxxxxxxxxx>
Date: Thu, 10 Oct 2002 02:39:21 +0000
I'm rather new to XSL, and was hoping that someone could help me
with the following problem:

I have an XML file that describes various items for a computer store, things like hard drives, optical drives, network cards, etc. Each item has the same attribute list, and are grouped under elements such as <hard_disk>, <video_card>, etc. But in some instances, I have further sub-categorized items under their respective manufacturer, if a given company makes more than one item. For example, for video cards, let's say I have brand_s and brand_t. Brand_s only makes one type of video card, so I put that directly under the <video_card> element. But brand_t makes two types of video cards, so I create a new element called <brand_t_vid_card> and below that I have both of the video cards made by brand_t, such as <video_card_type_1> and <video_card_type_2>. Now, I want to use an XSL to translate this XML file into one large HTML file, listing all of the different components, but I run into a problem when I use a simple <xsl:for-each select="component/*/*/*"> statement, since this will only traverse down 3 levels from the <component> element, but in some cases (as noted above), I'll need to traverse further down to the next element. I'm sure there is an easy way to do this, but I have only limited knowledge of XSL, and I would rather not have to restructure the entire XML file so that it works with my single for-each statement. If anyone can make sense of what I'm talking about, I would greatly appreciate an answer. Below is an example of my XML file to further make my question more clear. Thanks in advance!

Adam Cohen

<component>
	<device>
		<hard_disk>
			<brand_x_hard_disk manufacturer="x">
				<image>blah</image>
				<description>
					information about brand x hard disk
				</description>
			</brand_x_hard_disk>
			<brand_y_hard_disk manufacturer="y">
				<image>blah</image>
				<description>
					information about brand y hard disk
				</description>
			</brand_y_hard_disk>
		</hard_disk>
	</device>
	<card>
		<video_card>
			<brand_s_vid_card manufacturer="s">
				<image>blah</image>
				<description>
					information about brand s video card
				</description>
			</brand_s_vid_card>
			<brand_t_vid_card>
				<video_card_type_1 manufacturer="t">
					<image>blah</image>
					<description>
						information about brand s video card
					</description>
				</video_card_type_1>
				<video_card_type_2 manufacturer="t">
					<image>blah</image>
					<description>
						information about brand s video card
					</description>
				</video_card_type_2>
			</brand_t_vid_card>
		</video_card>
	</card>
</component>







_________________________________________________________________
MSN Photos is the easiest way to share and print your photos: http://photos.msn.com/support/worldwide.aspx



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



Current Thread