Hoi
zit hier al met 2 mensen op te staren voor net iets te lang:
we proberen een soort van nested structuur te nummeren om de volgorde van een conversatie te volgen:
het gaat het em dus om het nummeren van de vragen enkel die kunnen volgen on eender welk antwoord, en elk antwoord kan meerdere opvolging vragen hebben. (niet elk antwoord heeft een follow up vraag). de orde van antwoorden is belangrijk en kan niet veranderd worden.
de xml is as volgt
het belangrijke is dat de nummering niet in de data mag staan maar dat deze automatish gegeneert moet worden. Logisch voor een mens tamelijk eenvoudig maar we slagen er niet in dit met xslt te vertalen. Voor elke question title moet dus het juiste nummer komen.
xslt:
de code voor de andere items is fine en voor te testen de enige van belang is
question/title.
het probleem is dat hoewel de nummer per level echt wel verdiepen (i.e. 1, 1.1., 1.1.1 etc) het ons niet lukt in bovenstaand geval
vraag 1.2 te krijgen: in plaats daarvan krijgen we opnieuw 1.1 (het gekke is wel dat vraag 1.3 dan wordt weergegevn als 1.2).
m.a.w. na elke vraag wordt er een nummer gereset en we snappen niet waarom (we hebben echt al 10-tallen 'count' selects geprobeert maar de resultaten worden niet beter:
answers/answers/question/title etc. maar zodra je in 1 antwoord 2 vragen hebt met elk nog antwoorden loopt het mis.
we denken dat de count 'query' niet werkt maar we hebben echt zoveel geprobeert we beginnen ons af te vragen of het uberhaupt wel kan en/of we een logica fout maken in het gebruik van xslt.
Let wel we zoeken geen hardcore solutions met 20 variablen etc, aangezien dit in feite een mooi recursief probleem is.
Enig idee?
zit hier al met 2 mensen op te staren voor net iets te lang:
we proberen een soort van nested structuur te nummeren om de volgorde van een conversatie te volgen:
code:
1
2
3
4
5
6
7
8
9
10
| vraag 1
antwoord
vraag 1.1
antwoord
etc...
antwoord
antwoord
antwoord
vraag 1.2
vraag 1.3 |
het gaat het em dus om het nummeren van de vragen enkel die kunnen volgen on eender welk antwoord, en elk antwoord kan meerdere opvolging vragen hebben. (niet elk antwoord heeft een follow up vraag). de orde van antwoorden is belangrijk en kan niet veranderd worden.
de xml is as volgt
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="test.xsl"?> <questions> <!-- root --> <question> <title>vraag 1</title> <answers> <answer> <title>antwoord</title> <questions> <question> <title>vraag 1.1</title> <answers> <answer> <title>antwoord</title> <questions /> </answer> <answer> <title>antwoord</title> <questions /> </answer> </answers> </question> </questions> </answer> <answer> <title>antwoord</title> <questions/> </answer> <answer> <title>antwoord</title> <questions> <question> <title>vraag 1.2</title> <answers /> </question> <question> <title>vraag 1.3</title> <answers /> </question> </questions> </answer> </answers> </question> </questions> |
het belangrijke is dat de nummering niet in de data mag staan maar dat deze automatish gegeneert moet worden. Logisch voor een mens tamelijk eenvoudig maar we slagen er niet in dit met xslt te vertalen. Voor elke question title moet dus het juiste nummer komen.
xslt:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| <?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" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> <xsl:template match="/"> <html> <head></head> <body> <xsl:apply-templates /> </body> </html> </xsl:template> <xsl:template match="questions"> <xsl:apply-templates /> </xsl:template> <xsl:template match="question"> <div> <xsl:apply-templates /> </div> </xsl:template> <xsl:template match="question/title"> <h1> <!-- todo needs to be depth related how to find depth of answer? --> <!-- <xsl:value-of count(ancestor::NODES) --> <xsl:number format="1. " level="multiple" count="questions/question"/> <!-- HET PROBLEEM --> <xsl:apply-templates /> </h1> </xsl:template> <xsl:template match="answers"> <ul><xsl:apply-templates /></ul> </xsl:template> <xsl:template match="answer/title"> <li><xsl:apply-templates /></li> </xsl:template> </xsl:stylesheet> |
de code voor de andere items is fine en voor te testen de enige van belang is
question/title.
het probleem is dat hoewel de nummer per level echt wel verdiepen (i.e. 1, 1.1., 1.1.1 etc) het ons niet lukt in bovenstaand geval
vraag 1.2 te krijgen: in plaats daarvan krijgen we opnieuw 1.1 (het gekke is wel dat vraag 1.3 dan wordt weergegevn als 1.2).
code:
1
2
3
4
5
6
7
8
9
10
11
| vraag 1
antwoord
vraag 1.1
antwoord
etc... (als je verder xml toevoegt gaat het naar 1.1.1)
antwoord
antwoord
antwoord
vraag 1.1
vraag 1.2
etc,,, (als je verder gaat gaat het naar 1.2.1, 1.2.2) |
m.a.w. na elke vraag wordt er een nummer gereset en we snappen niet waarom (we hebben echt al 10-tallen 'count' selects geprobeert maar de resultaten worden niet beter:
answers/answers/question/title etc. maar zodra je in 1 antwoord 2 vragen hebt met elk nog antwoorden loopt het mis.
we denken dat de count 'query' niet werkt maar we hebben echt zoveel geprobeert we beginnen ons af te vragen of het uberhaupt wel kan en/of we een logica fout maken in het gebruik van xslt.
Let wel we zoeken geen hardcore solutions met 20 variablen etc, aangezien dit in feite een mooi recursief probleem is.
Enig idee?