---
title: "Ny på det här..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/xml/107450-ny-på-det-här"
topic: "XML"
topic_url: "https://www.webforum.nu/amne/xml"
author: "nkrantz"
published: "2004-07-16T10:48:13.000Z"
updated: "2004-07-16T19:37:07.000Z"
replies: 11
views: 501
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/xml/107450-ny-på-det-här"
---

# Ny på det här...

## #1 — nkrantz, 2004-07-16T10:48Z

Har en XML fil som ser ut i princip så här:

```
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<sortiment>
	<kategori id="1">
		<namn>Kategori 1</namn>
		<produkt id="1">
			<namn>Produkt 1</namn>
			<langd>12</langd>
		</produkt>
	</kategori>
  	<kategori id="2">
		<namn>Kategori 2</namn>
		<underkategori id="2.1">
			<namn>Underkategori 2.1</namn>
			<produkt id="1">
				<namn>Produkt 1</namn>
				<bredd>42</bredd>
			</produkt>
		</underkategori>
		<underkategori id="2.2">
			<namn>Underkategori 2.2</namn>
			<produkt id="1">
				<namn>Produkt 2</namn>
				<bredd>60</bredd>
			</produkt>
		</underkategori>
	</kategori>
	<kategori id="3">
		<namn>Kategori 3</namn>
		<underkategori id="3.1">
			<namn>Undekategori 3.1</namn>
			<produkt id="1">
				<namn>Produkt 1</namn>
				<volym>70</volym>
			</produkt>
		</underkategori>
		<underkategori id="3.2">
			<namn>Undekategori 3.2</namn>
			<produkt id="1">
				<namn>Produkt 1</namn>
				<volym>70</volym>
			</produkt>
		</underkategori>
	</kategori>
</sortiment>
```

 När jag i min XSL fil skall presentera dessa så stöter jag på problemet att det i de olika underkategorierna finns olika "variabler" som jag bara vill visa beroende på vilken underkategori det är.

På något sätt vill jag alltså selektera och kolla om det matchar, exempelvis i Kategori 1 vill jag visa längd, i kategori 2 bredden och i kategori 3 volymen.

Hur göra?

mvh,
Niclas

Permalänk: https://www.webforum.nu/p/107450

## #2 — toha, 2004-07-16T12:13Z

Hur fungerar det med det här?

```
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	
	<xsl:output method="html"/>
	
	<xsl:template match="sortiment">
		<xsl:apply-templates select="kategori" />
	</xsl:template>
	
	<xsl:template match="kategori">
		<h1><xsl:value-of select="namn" /></h1><br />
		<xsl:apply-templates select="//produkt" />
	</xsl:template>

	<xsl:template match="produkt">
		<p>Produkt i kategori: <xsl:value-of select="ancestor::kategori/@id" />.<br />
		<xsl:choose>
			<xsl:when test="ancestor::kategori/@id = '1'">
				Längd: <xsl:value-of select="langd" />,
			</xsl:when>
			<xsl:when test="ancestor::kategori/@id = '2'">
				Bredd: <xsl:value-of select="bredd" />,
			</xsl:when>
			<xsl:when test="ancestor::kategori/@id = '3'">
				Volym: <xsl:value-of select="volym" />.
			</xsl:when>
		</xsl:choose>
		</p>
	</xsl:template>

</xsl:stylesheet>
```

Man kanske måste ha MSXML 4.0 för att få det där med **ancestor::** att fungera. Är osäker. :O

Permalänk: https://www.webforum.nu/p/1387188

## #3 — toha, 2004-07-16T12:14Z

Förresten, du använder väl CookTop? <http://www.xmlcooktop.com/>

Permalänk: https://www.webforum.nu/p/1387189

## #4 — nkrantz, 2004-07-16T12:32Z

Tror att jag nog kan lösa det utifrån din kod! Tackar!

Nope, använder inte CookTop, men det kanske är dags att börja nu ;) Tack även för detta!

// Nippe

Permalänk: https://www.webforum.nu/p/1387197

## #5 — nkrantz, 2004-07-16T12:52Z

Hm, kanske var det där MSXML 4.0 som krävdes, får nämligen: 
Expected token 'eof' found ':'. ancestor--\>:\<--:kategori/@id = '2'

Hur löser jag det, kan man ladda ner MSXML 4.0?

/N

Permalänk: https://www.webforum.nu/p/1387210

## #6 — @nders, 2004-07-16T12:53Z

<http://www.microsoft.com/xml/>

(för övrigt är Cooktop hemsk. Men det är väl en smaksak. ;) )

mvh

Permalänk: https://www.webforum.nu/p/1387211

## #7 — nkrantz, 2004-07-16T12:56Z

okej, tack för det!

Men vad händer om den som besöker sidan inte har MSXML 4.0? Jag har det senaste i mitt system uppdaterat, och jag verkar ju inte ha det...

CookTop fattade jag mindre av... :)

Permalänk: https://www.webforum.nu/p/1387212

## #8 — nkrantz, 2004-07-16T12:59Z

Hm, får det ändå inte att funka.

Finns det något annat sätt att lösa if-problemet? Som PHP kille tycker jag ju att \<xsl:when bla=2\> borde räcka...

// Nippe

Permalänk: https://www.webforum.nu/p/1387213

## #9 — @nders, 2004-07-16T13:02Z

Tja, om du låter klienten transformera på det viset så kräver du ju att klienten har 4:an också. Annars kan du ju alltid transformera på servern och skicka ifrån dig färdig html...

Permalänk: https://www.webforum.nu/p/1387219

## #10 — nkrantz, 2004-07-16T13:05Z

Jo, men det är det jag gör! (Är ett litet skolprojekt bara...) Fast det verkade ändå som om att ancestor:: funkade från början, för när jag bara kopierade koden som toha hade så fick jag inget fel...

Så det är väl något annat, får leta vidare!

Tack!

/N

Permalänk: https://www.webforum.nu/p/1387220

## #11 — nkrantz, 2004-07-16T13:52Z

Jag får fel när jag försöker göra en selection i min kod: 
\<xsl:if test="@id = 2"\>
    hej
\</xsl:if\>

Den klagar på Expected token 'eof' found '='. @id --\>=\<-- 0

Någon som kan förklara lite enkelt vad det innebär och hur jag löser det!?!

Permalänk: https://www.webforum.nu/p/1387240

## #12 — toha, 2004-07-16T19:37Z

> (för övrigt är Cooktop hemsk. Men det är väl en smaksak.  )

Jo det är sant att det inte är ett särskilt vackert eller användarvänligt program men jag gillar att xpath-konsollen i den samt att man kan göra en xlst-transform i det. Dessutom är det ju gratis. :)

Permalänk: https://www.webforum.nu/p/1387374

---

Tråden på webben: https://www.webforum.nu/amne/xml/107450-ny-på-det-här
