xsl uniek layer id genereren.

Pagina: 1
Acties:

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Ik heb deze topic net ook al op webdesign en graphics geplaatst maar geen bruikbaar antwoord gekregen. Ik moet dus voor iedere layer een unieke layer naam genereren.


stukje xsl code.
code:
1
2
3
4
5
6
7
8
9
10
<xsl:template match="solution">
    <div id="solution1234" class="solution">
        <a href="sites" onClick="menuExpand('solutionContent1234'); return false;"><xsl:apply-templates select="CVAPair"/></a>
    </div>
    <div id="solutionContent1234" class="solutionContent">
        <xsl:for-each select="directAntecedents">
            <xsl:apply-templates select="solution"/>
        </xsl:for-each>
    </div>
</xsl:template>

En waar die 1234 vier staat moet dus iedere keer een nieuw getal komen :) En zo`n layer kan meerdere keren in een scherm voorkomen.

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
position() uniek genoeg?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
ik denk het. Maar ik weet niet eens hoe ik een variable hierin kan maken.
code:
1
2
3
4
5
6
7
8
9
10
11
<xsl:template match="solution">
     int positionX = position();  
     <div id="solution"+position class="solution">
        <a href="sites" onClick="menuExpand('solutionContent'+position); return false;"><xsl:apply-templates select="CVAPair"/></a>
    </div>
    <div id="solutionContent"+position class="solutionContent">
        <xsl:for-each select="directAntecedents">
            <xsl:apply-templates select="solution"/>
        </xsl:for-each>
    </div>
</xsl:template>

dit gaat niet werken :)

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

of anders generate-id() gebruiken...

"You're only as good, as what you did last week."


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
en waar kan ik die funtie aanroepen en waar is die onderdeel van?

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
100 % ongetest
code:
1
2
3
4
5
6
7
8
9
10
<xsl:template match="solution">
     <div id="solution{position()}" class="solution">
        <a href="sites" onClick="menuExpand('solutionContent{position()}'); return false;"><xsl:apply-templates select="CVAPair"/></a>
    </div>
    <div id="solutionContent{postion()}" class="solutionContent">
        <xsl:for-each select="directAntecedents">
            <xsl:apply-templates select="solution"/>
        </xsl:for-each>
    </div>
</xsl:template>

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

code:
1
2
3
4
5
6
7
8
9
10
<xsl:template match="solution">
    <div id="solution1234" class="solution">
        <a href="sites" onClick="menuExpand('solutionContent1234'); return false;"><xsl:apply-templates select="CVAPair"/></a>
    </div>
    <div id="solutionContent1234" class="solutionContent">
        <xsl:for-each select="directAntecedents">
            <xsl:apply-templates select="solution"/>
        </xsl:for-each>
    </div>
</xsl:template>

herschrijven naar
code:
1
2
3
4
5
6
7
8
9
10
<xsl:template match="solution">
    <div id="solution{generate-id(.)}" class="solution">
        <a href="sites" onClick="menuExpand('solutionContent{generate-id(.)}'); return false;"><xsl:apply-templates select="CVAPair"/></a>
    </div>
    <div id="solutionContent{generate-id(.)}" class="solutionContent">
        <xsl:for-each select="directAntecedents">
            <xsl:apply-templates select="solution"/>
        </xsl:for-each>
    </div>
</xsl:template>

/disclaimer. ff uit me blote hoofd...heb hier geen Komodo op deze bak installed dus kan niet debuggen...

"You're only as good, as what you did last week."


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
De code word volgens mij nu goed gegenereerd, alleen het werkt nog niet. Moet eerst de html code opschonen voordat ik kan zien wat er aan de hand is. Weet een van jullie nog een goeie html beautifier? :)

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Ik heb het nog maar ff nagevraagd, en je moet idd generate-id() hebben. position() levert de positie ten opzichte van zijn parent aan.

Dat is dus niet meer uniek als niet al je dingen dezelfde parent hebben.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Ik zie trouwens waarom het niet werkt. Ik heb in de XSL file ook een stukje javascript staan, en dat staat tussen commentaar. Dit copieert hij niet mee naar de html file. Hoe kan ik dit fixen?

[ps] ben xsl newbie.

[ps2] wat is verschil tussen xsl en xslt?? en wat kan ik het beste gebruiken?

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Op vrijdag 28 december 2001 14:13 schreef Alarmnummer het volgende:
Ik zie trouwens waarom het niet werkt. Ik heb in de XSL file ook een stukje javascript staan, en dat staat tussen commentaar. Dit copieert hij niet mee naar de html file. Hoe kan ik dit fixen?
<xsl:comment>bluh, hier hebben we comments</xsl:comment.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Alarmnummer: wat is verschil tussen xsl en xslt?? en wat kan ik het beste gebruiken?
XSLT is de transformatie component van XSL :) . XSL is eigenlijk een rare verzameling standaarden: XSL-Formatting Objects, XSL Transformations en XPath.

Zie w3c:
XSL is a language for expressing stylesheets. It consists of three parts: XSL Transformations (XSLT): a language for transforming XML documents, the XML Path Language (XPath), an expression language used by XSLT to access or refer to parts of an XML document. (XPath is also used by the XML Linking specification). The third part is XSL Formatting Objects: an XML vocabulary for specifying formatting semantics.
Dat XSLT onder XSL valt is misschien jammer te noemen.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Dit is mijn xsl code tot zover. Maar ik krijg dat script spul maar niet aan de praat. Als ik er niet extra <!-- --> omzet krijg ik parse problemen en als ik het wel doe dan neemt hij het niet mee.
code:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
        <head>
            <LINK HREF="master.css" REL="stylesheet" TYPE="text/css"/>
            <LINK HREF="menu.css" REL="stylesheet" TYPE="text/css"/>
            <STYLE TYPE="text/css">
                    <!--
                    -->
            </STYLE>

            <SCRIPT TYPE="text/javascript">
                <xsl:comment>
                    function initializeMenu()
                    {
                        var menuElements = document.getElementById('solutions').getElementsByTagName('div');
                        for (i = 0; i <menuElements.length; i++)
                        {
                            if (document.getElementsByTagName && document.getElementById)
                            {
                                if (menuElements[i].getAttribute('class') == 'solutionContent')
                                {
                                    menuElements[i].style.display = 'none';
                                }
                                else if (menuElements[i].className == 'solutionContent')
                                {   
                                    menuElements[i].style.display = 'none';
                                }
                            }
                        }
                    }


                    function menuExpand(pageObject)
                    {
                        if (document.getElementById(pageObject).style.display == 'none')
                        {
                            document.getElementById(pageObject).style.display = 'block';
                        }
                        else
                        {
                            document.getElementById(pageObject).style.display = 'none';
                        }
                    }
                </xsl:comment>
            </SCRIPT>
        </head>
      <!--body onLoad="initializeMenu();"-->
      <body>
        <div id="solutionsRoot" class="solutionsRoot">
            <!--ga iedere opl bij langs -->
            <xsl:for-each select="solutionSet/solution">
                <div id="solution" class="solution">
                    <a href="sites" onClick="menuExpand('solutionContent'); return false;">solution</a>
                </div>
                <div id="solutionContent" class="solutionContent">
                    <!--ga iedere opl uit de antecedenten lijst bij langs -->
                    <xsl:for-each select="directAntecedents">
                        <xsl:apply-templates select="solution"/>
                        <!--div id="solution" class="solution">
                            <a href="sites">a</a>
                        </div-->

                    </xsl:for-each>
                </div>
            </xsl:for-each>
        </div>
      </body>
      </html>
</xsl:template>

<xsl:template match="solution">
    <div id="solution{generate-id(.)}" class="solution">
        <a href="sites" onClick="menuExpand('solutionContent{generate-id(.)}'); return false;">
            <xsl:apply-templates select="CVAPair"/>
        </a>
    </div>
            <div id="solutionContent{generate-id(.)}" class="solutionContent">
            <xsl:for-each select="directAntecedents">
                <xsl:apply-templates select="solution"/>
            </xsl:for-each>
        </div>
    
</xsl:template>

<xsl:template match="CVAPair">
    <b>(</b>
    <xsl:value-of select="consequent/@text"/>,
    <xsl:value-of select="value/@text"/>,
    <xsl:value-of select="assignment/@text"/>
    <b>)</b>
</xsl:template>


</xsl:stylesheet>

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Alarmnummer: Ik zie trouwens waarom het niet werkt. Ik heb in de XSL file ook een stukje javascript staan, en dat staat tussen commentaar. Dit copieert hij niet mee naar de html file. Hoe kan ik dit fixen?
Gebruik gewoon de XHTML methode voor Javascripts? Netjes in een script tag en een CDATA section dus :) . Je moet gewoon zorgen dat een template geldige XHTML content oplevert...

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
CDATA section zou moeten werken:
code:
1
<![CDATA[...]]>

xsl:comment is denk ik niet de oplossing omdat je script helemaal geen commentaar is.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
arrrgghhh... nog meer acroniemen ;)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
het werkt!!!! thanx!! :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Alarmnummer: het werkt!!!! thanx!! :)
Met wat acroniemen extra lukt het altijd :+ ;)

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
resultaat:
code:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
        <head>
            <LINK HREF="master.css" REL="stylesheet" TYPE="text/css"/>
            <LINK HREF="menu.css" REL="stylesheet" TYPE="text/css"/>
            <STYLE TYPE="text/css">
                    <!--
                    -->
            </STYLE>

            <SCRIPT TYPE="text/javascript">
                <![CDATA[
                    function initializeMenu()
                    {
                        var menuElements = document.getElementById('solutionRoot').getElementsByTagName('div');
                        for (i = 0; i <menuElements.length; i++)
                        {
                            if (document.getElementsByTagName && document.getElementById)
                            {
                                if (menuElements[i].getAttribute('class') == 'solutionContent')
                                {
                                    menuElements[i].style.display = 'none';
                                }
                                else if (menuElements[i].className == 'solutionContent')
                                {   
                                    menuElements[i].style.display = 'none';
                                }
                            }
                        }
                    }


                    function menuExpand(pageObject)
                    {
                        if (document.getElementById(pageObject).style.display == 'none')
                        {
                            document.getElementById(pageObject).style.display = 'block';
                        }
                        else
                        {
                            document.getElementById(pageObject).style.display = 'none';
                        }
                    }
                ]]>
            </SCRIPT>
        </head>
      <body onLoad="initializeMenu();">
        <div id="solutionsRoot" class="solutionsRoot">
            <!--ga iedere opl bij langs -->
            <xsl:for-each select="solutionSet/solution">
                <div id="solution{generate-id(.)}" class="solution">
                    <a href="sites" onClick="menuExpand('solutionContent{generate-id(.)}'); return false;">solution</a>
                </div>
                
                <div id="solutionContent{generate-id(.)}" class="solutionContent">
                    <!--ga iedere opl uit de antecedenten lijst bij langs -->
                    <xsl:for-each select="directAntecedents">
                        <xsl:apply-templates select="solution"/>
                    </xsl:for-each>
                </div>
            </xsl:for-each>
        </div>
      </body>
      </html>
</xsl:template>

<xsl:template match="solution">
    <div id="solution{generate-id(.)}" class="solution">
        <a href="sites" onClick="menuExpand('solutionContent{generate-id(.)}'); return false;">
            <xsl:apply-templates select="CVAPair"/>
        </a>
    </div>
    
    <div id="solutionContent{generate-id(.)}" class="solutionContent">
        <xsl:for-each select="directAntecedents">
            <xsl:apply-templates select="solution"/>
        </xsl:for-each>
    </div>
</xsl:template>

<xsl:template match="CVAPair">
    <b>(</b>
    <xsl:value-of select="consequent/@text"/>,
    <xsl:value-of select="value/@text"/>,
    <xsl:value-of select="assignment/@text"/>
    <b>)</b>
</xsl:template>


</xsl:stylesheet>

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

nice :)

"You're only as good, as what you did last week."


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
mensen die het eens in actie willen zien:
www.geocities.com/peter_veentjer

en dan personal/projects/expertsystem. Je ziet aan de zijkant een redeneerbestand (rulebase) staan en aan de andere kant zie je de oplossingen. Je krijgt in tegenstelling tot monotone logica meerdere oplossing omdat hier gebruik word gemaakt van niet-monotone logica. (Je mag tegenstrijdige beweringen doen).
Pagina: 1