Toon posts:

[xml] hoe ver ga je?

Pagina: 1
Acties:
  • 175 views sinds 30-01-2008

Verwijderd

Topicstarter
Waar ik nu tegen aanloop bij het bouwen van een applicatie volledig gebaseerd op xml is:

Als je echt elke pagina xml-gebaseerd wilt maken, is er dan geen universele standaard om een bepaalde pagina in xml te beschrijven zodat je niet voor elke pagina een eigen xml-definitie hoeft te bedenken? Bestaat er zoiets als een GUI-xml-standaard? Je hebt binnen een web-based applicatie namelijk nogal wat pagina's die wezenlijk van elkaar verschillen. En het is nogal ene kolere-werk om voor elke afzonderlijke pagina te gaan bedenken hoe je xml-structuur in elkaar zou moeten zitten.

Iemand die hier ook al tegenaan is gelopen en hier een mooie oplossing voor gevonden heeft (ik noem geen namen mbravenboer ;))

  • dominic
  • Registratie: Juli 2000
  • Laatst online: 08-02 14:55

dominic

will code for food

Gebruik XML alleen voor data input/output naar de client waar het threaded data betreft. Verder vind ik XML niet echt interessant.

Download my music on SoundCloud


Verwijderd

Topicstarter
Bedankt voor dit verhelderende antwoord! Ik ga d'r meteen mee aan de slag! >:)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op donderdag 03 januari 2002 09:39 schreef bitprobe het volgende:
Gebruik XML alleen voor data input/output naar de client waar het threaded data betreft. Verder vind ik XML niet echt interessant.
niet :? Juist de varieteit waarvoor je XML kan gebruiken maakt het interessant imo.

Maar ik heb te weinig ervaring met XML om je een zinnig antwoord te geven Mas*Mind, sorry. Kon het alleen niet laten even een ot reactie te geven O-)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Daar heb je toch een DTD voor :?

Verwijderd

Ik denk dat je eerste vraag zou moeten zijn: waarom gebruik ik XML? Wat wil ik ermee bereiken? Is XML wel 'the way to go'?

Als ik jou verhaal lees wil je eigenlijk met templates gaan werken, waarbij je dus gelijksoortige pagina's op een gelijksoortige manier wil weergeven, en tevens wil je de content en layout van elkaar scheiden. Daar zijn template engines voor, ieder met voor- en nadelen, sommige maken gebruik van XML anderen niet.

Op zich heeft XML niets met lay-out te maken, dus een XML-GUI standaard is niet relevant.

Wat wel interessant is, is het feit dat je vanuit je business logic van je applicatie een XML document terug kunt laten komen wat de data ophaalt, om dat met een XSLT om te zetten naar een gewenste layout. Dit wordt vooral interessant als je dezelfde data op meerdere manieren wil laten zien (HTML, WML, XML zonder opmaak, text, HTML in verschillende theme's etc). Dan definieer je verschillende stylesheets voor dezelfde data, en komen er anderen dingen uit.

Jij lijkt ook een beetje te zitten met hoe je je gegevens zo modelleert zodat je dezelfde stylesheet voor meer van dezelfde soort pagina's kunt gebruiken. Mijn idee is om een XML document op te laten bouwen door verschillende modules die XML uitspugen, en daar dan vervolgens een XSLT over doen. Denk dan aan bijvoorbeeld een stukje XML voor een navigatiebalk, een stukje XML voor je heading een stukje XML voor een artikel op je website en een stukje XML voor een footer.

HTH :)

Verwijderd

Topicstarter
Op donderdag 03 januari 2002 10:08 schreef MrX het volgende:
Ik denk dat je eerste vraag zou moeten zijn: waarom gebruik ik XML? Wat wil ik ermee bereiken? Is XML wel 'the way to go'?
Dat stadium ben ik al voorbij
Als ik jou verhaal lees wil je eigenlijk met templates gaan werken...
Klopt aardig
Op zich heeft XML niets met lay-out te maken, dus een XML-GUI standaard is niet relevant.
Klopt natuurlijk, xml-gui standaard was ook niet echt de juiste benaming. Bedoelde meer een standaard om de structuur van een pagina weer te geven, zoiets als:

<pagina>
<menu>
<menuItem></menuItem>
</menu>
<tabelletje>
<rij>
<kolom></kolom>
</rij>
</tabelletje>
</pagina>

etc...
Wat wel interessant is, is het feit dat je vanuit je business logic van je applicatie een XML document terug kunt laten komen wat de data ophaalt, om dat met een XSLT om te zetten naar een gewenste layout...
Bekend verhaal...
Jij lijkt ook een beetje te zitten met hoe je je gegevens zo modelleert zodat je dezelfde stylesheet voor meer van dezelfde soort pagina's kunt gebruiken.
Exact!
Mijn idee is om een XML document op te laten bouwen door verschillende modules die XML uitspugen, en daar dan vervolgens een XSLT over doen. Denk dan aan bijvoorbeeld een stukje XML voor een navigatiebalk, een stukje XML voor je heading een stukje XML voor een artikel op je website en een stukje XML voor een footer.
In die richting zat ik al, nu blijft mijn vraag: Bestaat er een soort van standaard voor het defnieren van de structuur van een pagina. Is hier al eens wat mee gedaan?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Mas*Mind: In die richting zat ik al, nu blijft mijn vraag: Bestaat er een soort van standaard voor het defnieren van de structuur van een pagina. Is hier al eens wat mee gedaan?
Ik zie je probleem niet echt: waarom wil je een standaard?

Je kunt de content van je site leveren in XML formaat. Hierbij gaat het dus om de pure data. Je kunt deze transformeren naar XHTML met behulp van XSLT :) .

Uiteraard kan je heel moeilijk gaan doen met bijv XUL (das dus een XML standaard voor GUIs) of XForms, maar ik zou eerst eens goed bedenken wat je wilt bereiken. Is simpele transformatie van data-XML naar XHTML genoeg? Wel, dan zou ik niet moeilijk doen :) .

Op GoT is er al heel veel gesproken over templates versus XSLT en de mogelijke toepassingen in deze vorm. Dus het heeft niet zoveel nut om weer heel het verhaal op te gaan hangen :) . Als je iets exacter kan aangeven waarom je twijfelt kan ik er misschien specifieker op in gaan :) .

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


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Btw: ik maak een beetje uit je verhaal op dat je elke pagina wilt gaan beschrijven in een eigen XML formaat. Dat kan je doen, maar lijkt mij niet altijd even handig (soms wel). Bekijk eens goed of je je niet gewoon kan redden door het transformeren van de data bronnen die je tot je beschikking hebt :) .

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


Verwijderd

Topicstarter
Het probleem ligt bij het definieren van elke pagina in xml; Voor formuliertjes is het het probleem niet, daar heb ik al een generieke oplossing voor bedacht, maar bijv het overzichtjes van het een of het ander, gecombineerd met eventuele inputveldjes, knopjes, linkjes etc..etc..

Voorlopig zou het inderdaad simpelweg naar (x)html getransformeerd worden, maar wellicht in de toekomst ook naar iets anders: wml, pda-formaat (naam?), (allemaal niet zo ingewikkeld) maar eventueel naar een windows-gui oid

Wat ik dus zoek is inderdaad een generieke manier van beschrijven van een pagina. XUL ken ik nog niet, dus daar zal ik eens informatie over gaan zoeken.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
[b]maar wellicht in de toekomst ook naar iets anders: wml, pda-formaat (naam?), (allemaal niet zo ingewikkeld) maar eventueel naar een windows-gui oid
Dan transformeer je dat toch ook gewoon? Das juist het mooie van een XML+XSL oplossing :) . Ik denk dat je voor dergelijke devices juist niets hebt aan de notie van een complete 'pagina'. De basis-content en een transformatie-laag lijkt mij wel een goede opzet. XUL is hier in ieder geval veel te zwaar voor vermoed ik.

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


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

<ot @martin>
teaser : [topic=368459/1/25]
</ot>

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
Ik heb nu de volgende xml-notatie bedacht. Feitelijk is het gewoon een gestripte xhtml-versie, zonder gui specificaties (kleuren, lettertype's etc..) Is dit nou een goede manier om dit te bewerkstelligen? Commentaar plz
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
<?xml version="1.0"?>
<window>
  <header>
    <title>bla</title>
  </header>
  <content>
    <table border="1">
    <row>
      <column><text><link>row1 col1</link></text></column>
      <column><text>row1 col2</text></column>
    </row>
    <row>
      <column><text>row2 col1</text></column>
      <column><text>row2 col1</text></column>
    </row>
    </table>
    <form method="post" action="bla.asp">
    <table>
      <row>
        <column><text>naam</text></column>
        <column><field type="text"/></column>
      </row>
      <row>
        <column><text>boe</text></column>
        <column><field type="textarea"/></column>
      </row>
      <row>
        <column><text>bla</text></column>
        <column>
        <dropdownlist>
          <option value="bla" label="bla"/>
          <option value="boe" label="boe" selected="true"/>
        </dropdownlist>
        </column>
      </row>
      <row>
        <column colspan="2" align="center"><button type="submit" label="submit"/></column>
      </row>
    </table>
    </form>
  </content>
</window>

Verwijderd

Topicstarter
dan is dit bijv mijn html.xsl bestand (ondertussen heb ik ook: xhtml.xsl, wml.xsl en chtml.xsl)
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
              xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
            
  <xsl:output method="html" 
              encoding="ISO-8859-1"
              omit-xml-declaration="yes"
              media-type = "text/html"
          version="1.0"
          doctype-system="http://www.w3.org/TR/html4/strict.dtd" 
          doctype-public="-//W3C//DTD HTML 4.01//EN"
          indent="yes"/>
  
  <xsl:template match="window">
    <html><xsl:apply-templates/></html>
  </xsl:template>
  
  <xsl:template match="header">
    <head><xsl:apply-templates/></head>
  </xsl:template>
  
  <xsl:template match="title">
    <title><xsl:value-of select="text()"/></title>
  </xsl:template>
  
  <xsl:template match="script">
    <xsl:element name="script">
    <xsl:attribute name="language"><xsl:value-of select="@language"/></xsl:attribute>
    <xsl:attribute name="mimetype"><xsl:value-of select="@mimetype"/></xsl:attribute>
    <xsl:attribute name="src"><xsl:value-of select="@url"/></xsl:attribute>
    <xsl:value-of select="text()"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="content">
    <xsl:element name="body">
    <xsl:call-template name="bodyEventAttributes"/>
    <xsl:apply-templates/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="linebreak">
    <br/>
  </xsl:template>
  
  <xsl:template match="paragraph">
    <xsl:element name="p">
    <xsl:call-template name="standardAttributes"/>
    <xsl:apply-templates/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="layer">
    <xsl:element name="div">
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="standardEventAttributes"/>
    <xsl:apply-templates/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="text">
    <xsl:element name="div">
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="standardEventAttributes"/>
    <xsl:apply-templates/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="link">
    <xsl:element name="a">
    <xsl:if test="@url">
      <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@target">
      <xsl:attribute name="target"><xsl:value-of select="@target"/></xsl:attribute>
    </xsl:if>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="standardEventAttributes"/>
    <xsl:call-template name="optionalAttributes"/>
    <xsl:value-of select="@label"/>
    <xsl:apply-templates/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="image">
    <xsl:element name="img">
    <xsl:attribute name="src"><xsl:value-of select="@source"/></xsl:attribute>
    <xsl:attribute name="alt"><xsl:value-of select="@hint"/></xsl:attribute>
    <xsl:if test="@height">
      <xsl:attribute name="height"><xsl:value-of select="@height"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@width">
      <xsl:attribute name="width"><xsl:value-of select="@width"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@align">
      <xsl:attribute name="align"><xsl:value-of select="@align"/></xsl:attribute>
    </xsl:if>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="standardEventAttributes"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="list">
    <xsl:element name="ul">
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="standardEventAttributes"/>
    <xsl:apply-templates select="listitem"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="listitem">
    <xsl:element name="li">
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="standardEventAttributes"/>
    <xsl:apply-templates/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="table">
    <xsl:element name="table">
    <xsl:if test="@border">
      <xsl:attribute name="border"><xsl:value-of select="@border"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@cellpadding">
      <xsl:attribute name="cellpadding"><xsl:value-of select="@cellpadding"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@cellspacing">
      <xsl:attribute name="cellspacing"><xsl:value-of select="@cellspacing"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@width">
      <xsl:attribute name="width"><xsl:value-of select="@width"/></xsl:attribute>
    </xsl:if>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="standardEventAttributes"/>
    <xsl:apply-templates select="row"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="row">
    <xsl:element name="tr">    
    <xsl:if test="@align">
      <xsl:attribute name="align"><xsl:value-of select="@align"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@valign">
      <xsl:attribute name="valign"><xsl:value-of select="@valign"/></xsl:attribute>
    </xsl:if>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="standardEventAttributes"/>
    <xsl:apply-templates select="column"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="column">
    <xsl:element name="td">    
    <xsl:if test="@align">
      <xsl:attribute name="align"><xsl:value-of select="@align"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@valign">
      <xsl:attribute name="valign"><xsl:value-of select="@valign"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@colspan">
      <xsl:attribute name="colspan"><xsl:value-of select="@colspan"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@rowspan">
      <xsl:attribute name="rowspan"><xsl:value-of select="@rowspan"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@height">
      <xsl:attribute name="height"><xsl:value-of select="@height"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@width">
      <xsl:attribute name="width"><xsl:value-of select="@width"/></xsl:attribute>
    </xsl:if>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="standardEventAttributes"/>
    <xsl:apply-templates/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="form">
    <xsl:element name="form">
    <xsl:attribute name="action"><xsl:value-of select="@action"/></xsl:attribute>
    <xsl:attribute name="method"><xsl:value-of select="@method"/></xsl:attribute>
    <xsl:attribute name="target"><xsl:value-of select="@target"/></xsl:attribute>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="formEventAttributes"/>
    <xsl:apply-templates/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="field[@type='text']">
    <xsl:element name="input">
    <xsl:attribute name="type">text</xsl:attribute>
    <xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>
    <xsl:if test="@maxlength">
      <xsl:attribute name="maxlength"><xsl:value-of select="@maxlength"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@size">
      <xsl:attribute name="size"><xsl:value-of select="@size"/></xsl:attribute>
    </xsl:if>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="formFieldEventAttributes"/>
    <xsl:call-template name="optionalFieldAttributes"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="field[@type='secret']">
    <xsl:element name="input">
    <xsl:attribute name="type">password</xsl:attribute>
    <xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>
    <xsl:if test="@maxlength">
      <xsl:attribute name="maxlength"><xsl:value-of select="@maxlength"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@size">
      <xsl:attribute name="size"><xsl:value-of select="@size"/></xsl:attribute>
    </xsl:if>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="formFieldEventAttributes"/>
    <xsl:call-template name="optionalFieldAttributes"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="field[@type='hidden']">
    <xsl:element name="input">
    <xsl:attribute name="type">hidden</xsl:attribute>
    <xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="formFieldEventAttributes"/>
    <xsl:call-template name="optionalFieldAttributes"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="field[@type='upload']">
    <xsl:element name="input">
    <xsl:attribute name="type">file</xsl:attribute>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="formFieldEventAttributes"/>
    <xsl:call-template name="optionalFieldAttributes"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="field[@type='checkbox']">
    <xsl:element name="input">
    <xsl:attribute name="type">checkbox</xsl:attribute>
    <xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="formFieldEventAttributes"/>
    <xsl:call-template name="optionalFieldAttributes"/>
    <xsl:if test="@checked='true'">
      <xsl:attribute name="checked">true</xsl:attribute>
    </xsl:if>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="field[@type='radio']">
    <xsl:element name="input">
    <xsl:attribute name="type">radio</xsl:attribute>
    <xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="formFieldEventAttributes"/>
    <xsl:call-template name="optionalFieldAttributes"/>
    <xsl:if test="@checked='true'">
      <xsl:attribute name="checked">true</xsl:attribute>
    </xsl:if>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="field[@type='textarea']">
    <xsl:element name="textarea">
    <xsl:attribute name="rows"><xsl:value-of select="@rows"/></xsl:attribute>
    <xsl:attribute name="cols"><xsl:value-of select="@cols"/></xsl:attribute>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="formFieldEventAttributes"/>
    <xsl:call-template name="optionalFieldAttributes"/>
    <xsl:value-of select="@value"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="button[@type='submit']">
    <xsl:element name="input">
    <xsl:attribute name="type">submit</xsl:attribute>
    <xsl:attribute name="value"><xsl:value-of select="@label"/></xsl:attribute>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="formFieldEventAttributes"/>
    <xsl:call-template name="optionalFieldAttributes"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="button[@type='normal']">
    <xsl:element name="input">
    <xsl:attribute name="type">button</xsl:attribute>
    <xsl:attribute name="value"><xsl:value-of select="@label"/></xsl:attribute>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="formFieldEventAttributes"/>
    <xsl:call-template name="optionalFieldAttributes"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="button[@type='image']">
    <xsl:element name="input">
    <xsl:attribute name="type">image</xsl:attribute>
    <xsl:attribute name="src"><xsl:value-of select="@source"/></xsl:attribute>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="formFieldEventAttributes"/>
    <xsl:call-template name="optionalFieldAttributes"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="dropdownlist">
    <xsl:element name="select">
    <xsl:attribute name="size"><xsl:value-of select="@size"/></xsl:attribute>
    <xsl:if test="@multiple='true'">
      <xsl:attribute name="multiple">true</xsl:attribute>
    </xsl:if>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="standardEventAttributes"/>
    <xsl:apply-templates select="option"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="option">
    <xsl:element name="option">
    <xsl:if test="@selected='true'">
      <xsl:attribute name="selected">true</xsl:attribute>
    </xsl:if>
    <xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>
    <xsl:call-template name="standardAttributes"/>
    <xsl:call-template name="standardEventAttributes"/>
    <xsl:value-of select="@label"/>
    </xsl:element>
  </xsl:template>
  
  <xsl:template name="standardAttributes">
    <xsl:if test="@id">
    <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@class">
    <xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@title">
    <xsl:attribute name="title"><xsl:value-of select="@hint"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@name">
    <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
    </xsl:if>
  </xsl:template>
  
  <xsl:template name="optionalAttributes">
    <xsl:if test="@tabindex">
    <xsl:attribute name="tabindex"><xsl:value-of select="@tabindex"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@accesskey">
    <xsl:attribute name="accesskey"><xsl:value-of select="@accesskey"/></xsl:attribute>
    </xsl:if>
  </xsl:template>
  
  <xsl:template name="optionalFieldAttributes">
    <xsl:if test="@disabled='true'">
    <xsl:attribute name="disabled">true</xsl:attribute>
    </xsl:if>
  </xsl:template>
  
  <xsl:template name="bodyEventAttributes">
    <xsl:if test="@onload">
    <xsl:attribute name="onload"><xsl:value-of select="@onload"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@onunload">
    <xsl:attribute name="onunload"><xsl:value-of select="@onunload"/></xsl:attribute>
    </xsl:if>
    <xsl:call-template name="standardEventAttributes"/>
  </xsl:template>
  
  <xsl:template name="formEventAttributes">
    <xsl:if test="@onsubmit">
    <xsl:attribute name="onsubmit"><xsl:value-of select="@onsubmit"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@onreset">
    <xsl:attribute name="onreset"><xsl:value-of select="@onreset"/></xsl:attribute>
    </xsl:if>
    <xsl:call-template name="standardEventAttributes"/>
  </xsl:template>
  
  <xsl:template name="formFieldEventAttributes">
    <xsl:if test="@onfocus">
    <xsl:attribute name="onfocus"><xsl:value-of select="@onfocus"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@onblur">
    <xsl:attribute name="onblur"><xsl:value-of select="@onblur"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@onselect">
    <xsl:attribute name="onselect"><xsl:value-of select="@onselect"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@onchange">
    <xsl:attribute name="onchange"><xsl:value-of select="@onchange"/></xsl:attribute>
    </xsl:if>
    <xsl:call-template name="standardEventAttributes"/>
  </xsl:template>
  
  <xsl:template name="standardEventAttributes">
    <xsl:if test="@onclick">
    <xsl:attribute name="onclick"><xsl:value-of select="@onclick"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@ondblclick">
    <xsl:attribute name="ondblclick"><xsl:value-of select="@ondblclick"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@onmousedown">
    <xsl:attribute name="onmousedown"><xsl:value-of select="@onmousedown"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@onmouseup">
    <xsl:attribute name="onmouseup"><xsl:value-of select="@onmouseup"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@onmouseover">
    <xsl:attribute name="onmouseover"><xsl:value-of select="@onmouseover"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@onmousemove">
    <xsl:attribute name="onmousemove"><xsl:value-of select="@onmousemove"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@onmouseout">
    <xsl:attribute name="onmouseout"><xsl:value-of select="@onmouseout"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@onkeypress">
    <xsl:attribute name="onkeypress"><xsl:value-of select="@onkeypress"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@onkeydown">
    <xsl:attribute name="onkeydown"><xsl:value-of select="@onkeydown"/></xsl:attribute>
    </xsl:if>
    <xsl:if test="@onkeyup">
    <xsl:attribute name="onkeyup"><xsl:value-of select="@onkeyup"/></xsl:attribute>
    </xsl:if>
  </xsl:template>

</xsl:stylesheet>

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op maandag 07 januari 2002 09:41 schreef Mas*Mind het volgende:
Ik heb nu de volgende xml-notatie bedacht.
Jij beschrijft al de layout in je XML bestand. Dit is fout. Je weet niet of je tekst van tevoren in een tabel wil hebben of dat de data over 2,3 of 4 rijen verspreidt wordt.
Je kan dan ook aan je XSL bestand zien dat je eigenlijk alle tags een andere naam geeft ipv de data in een bepaalde vorm gieten.
Je moet meer aan zoiets als dit denken:
code:
1
2
3
4
5
6
7
8
<page>
  <title>bla</title>
  <form>
    <name>Login form</name>
    <field type="text"><name>Username</name><value></value></field>
  </form>
  <parsetime>0.032</parsetime>
</page>

Ik noem dus de gegevens bij hun naam, niet hoe ze moeten worden weergegeven, dat is allemaal van later belang bij de transformatie.

Verwijderd

Topicstarter
mm..heb je op zich wel gelijk in, maar mijn probleem is: Als ik nou (zeg) 30 pagina's heb, moet ik dan voor elke pagina afzonderlijk gaan coderen hoe precies ik die data wil weergeven (al dan niet in een tabelletje of verspreid over 3 of 4 rijen). Wat ik dus wil hebben is 1 methode om in 1 keer een pagina te generen zonder dat ik voor elk type pagina opnieuw mijn code zal moeten schrijven.

En kan je het vastleggen van een tabeldefinitie ook niet zien als het definieren van de structuur van je pagina ipv het vastleggen van je layout? Het is meer een object om bepaalde elementen te groeperen. Hoe precies en met wat voor kleurtjes kan je in je xsl-pagina definieren. Of is dit toch echt uit den boze?

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Nou je kan geen generieke structuur gebruiken voor elk type pagina. Je pagina met links zal er anders uitzien dan je pagina met het gastenboek.

Je kan wel alles in 1 XSL bestand stoppen, als je dat bedoelt. Dan moet je gewoon veel templates gebruiken.
Ohja, en dat met die tabel, ja dat is uit den boze :P

Zoiets kan je beter zo oplossen
XSL:
code:
1
2
3
4
5
6
<xsl:template match="content">
<table>
<xsl:for-each select="link">
  <tr><td><xsl:value-of select="url"/></td><td><xsl:value-of select="description"/></td></tr>
</table>
</xsl:template>

Nu kan je later als je wilt in plaats van een tabel bijvoorbeeld een lijst gebruiken om je links te showen. In het XML bestand hoeft dan niks te veranderen.

Verwijderd

Topicstarter
dus als het goed is, is bovenstaand notatie in zoverre correct, buiten dat de 'table', 'list', 'layer' en 'paragraph' elementen er feitelijk niet in thuishoren.

Wat dus waarschijnlijk toch gaat betekenen dat ik voor elke pagina een aparte stylesheet moet gaan schrijven. damn ;(

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op maandag 07 januari 2002 10:48 schreef Mas*Mind het volgende:
Wat dus waarschijnlijk toch gaat betekenen dat ik voor elke pagina een aparte stylesheet moet gaan schrijven. damn ;(
Ja maar anders had je dat in je XML bestand moeten doen'.

(btw, je kan dus alles in 1 xsl gooien dit is server-side niet echt efficient/praktisch, maar client-side kan het ivm cachen wel een goede oplossing zijn. Als je dit wil, dan moet je gaan zoeken hoe templates in XSLT werken)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Jij beschrijft al de layout in je XML bestand. Dit is fout. Je weet niet of je tekst van tevoren in een tabel wil hebben of dat de data over 2,3 of 4 rijen verspreidt wordt.
Dat vind ik wel meevallen: als layout je data is, mag XML best layout beschrijven. Kijk maar naar SVG en XSL-Formatting Objects bijvoorbeeld. Op het gegeven moment moet je een beslissing maken waar je items wilt gaan plaatsen. Dit kan je doen in een stylesheet waarbij je direct naar XHTML vertaalt, of je kan nog een tussenliggende stap maken waarbij de layout je data is.

Of deze stap zinnig is, is wat anders: ik vind het wel heel erg veel op XHTML Strict lijken. Je ziet ook de omvang van je stylesheet: je moet heel veel zeer simpele 1-1 vertaligen doen. Het scheiden van letter-typen en kleuren kan je ook doen door XHTML Strict + CSS te gebruiken. In principe is deze laag dus niet zo heel erg interessant. Ik zou liever beschrijven welke data er in welk deel van de pagina moet komen.

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


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op maandag 07 januari 2002 10:53 schreef mbravenboer het volgende:
Dat vind ik wel meevallen: als layout je data is, mag XML best layout beschrijven. Kijk maar naar SVG en XSL-Formatting Objects bijvoorbeeld. Op het gegeven moment moet je een beslissing maken waar je items wilt gaan plaatsen. Dit kan je doen in een stylesheet waarbij je direct naar XHTML vertaalt, of je kan nog een tussenliggende stap maken waarbij de layout je data is.
Tuurlijk je mag wel data beschrijven, dus als layout toevallig data is dan mag dat :)
Bijvoorbeeld is het logisch om bij een plaatje een breedte/hoogte op te geven.
Maar bij de topic starter was dat duidelijk niet het geval.
Toen moest ik ff snel opzoeken wat SVG betekende :D, maar het is JAWR (Just Another W3C Recommendation) merkte ik al ;) (wel geinig trouwens, opvolger van flash?)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Mwah, hij beschrijf een indeling van een pagina... Ik zie daar niet direct een groot probleem in, zolang er ook maar meer atomaire XML data-bronnen zijn waaruit deze indeling-XML wordt opgebouwd...
Orphix: Toen moest ik ff snel opzoeken wat SVG betekende :D, maar het is JAWR (Just Another W3C Recommendation) merkte ik al ;) (wel geinig trouwens, opvolger van flash?)
Mwah, niet echt een volledige opvolger van flash denk ik, maar wel interessant :) . De naam zegt het zelf al: Scalable Vector Graphics. Quotje van de pagina:
SVG is a language for describing two-dimensional graphics in XML. SVG allows for three types of graphic objects: vector graphic shapes (e.g., paths consisting of straight lines and curves), images and text. Graphical objects can be grouped, styled, transformed and composited into previously rendered objects. Text can be in any XML namespace suitable to the appplication, which enhances searchability and accessibility of the SVG graphics. The feature set includes nested transformations, clipping paths, alpha masks, filter effects, template objects and extensibility.

SVG drawings can be dynamic and interactive. The Document Object Model (DOM) for SVG, which includes the full XML DOM, allows for straightforward and efficient vector graphics animation via scripting. A rich set of event handlers such as onmouseover and onclick can be assigned to any SVG graphical object. Because of its compatibility and leveraging of other Web standards, features like scripting can be done on SVG elements and other XML elements from different namespaces simultaneously within the same Web page
Of SVG geschikt is als formaat voor flash animaties weet ik niet. Ik heb niet genoeg verstand van beide om te kunnen beoordelen of ze de features van beide systemen aan kunnen. Er zijn al wel enkele pakketten die een export optie naar SVG aanbieden, maar dit gaat voor zover ik weet nog vooral om statische afbeeldingen... Misschien dan anderen meer weten :) .

sorry voor ut off-topic geklets ;) .

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


Verwijderd

Topicstarter
Op maandag 07 januari 2002 10:53 schreef mbravenboer het volgende:

[..]

Dat vind ik wel meevallen: als layout je data is, mag XML best layout beschrijven. [...]

mooi :)

Of deze stap zinnig is, is wat anders: ik vind het wel heel erg veel op XHTML Strict lijken. Je ziet ook de omvang van je stylesheet: je moet heel veel zeer simpele 1-1 vertaligen doen. Het scheiden van letter-typen en kleuren kan je ook doen door XHTML Strict + CSS te gebruiken. In principe is deze laag dus niet zo heel erg interessant. Ik zou liever beschrijven welke data er in welk deel van de pagina moet komen.
Klopt natuurlijk, maar het verschil is nu dat ik de flexibiliteit en kracht van xsl kan gebruiken. maw: Ik kan nu net zo makkelijk xhtml als wml als chtml uitpoepen. Daar is het toch zo'n beetje om te doen. Geef mij een beter methode om bovenstaand te bewerkstelligen en ik neem hem graag van je over. Voor specifieke uitzonderlijke type pagina's zoals een lijst van gebruikers of een lijst van transacties zal ik ook zeker een aparte xml-notatie en xsl-stylesheet schrijven, maar waar het mij om gaat zijn die pagina's waar de informatie niet zo heel erg belangrijk is maar meer de presentatie.

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Ja maar wat jij doet is in feite (een vorm van) HTML schrijven en dan die HTML transformeren naar HTML,WML of iets anders.
Ik vind dat een beetje raar gebruik van XML, omdat je misschien hele andere data aan wil bieden op de WML-versie dan op de HTML-versie (of via een hele andere layout), en dat gaat op deze manier erg omslachtig.

Je moet uiteraard doen wat jij logisch vindt, maar ik gebruik XML toch op een iets andere (conservatieve) manier ;)

Verwijderd

Topicstarter
ik beschrijf een webpagina, dat dat veel overeenkomsten heeft met html is dan volgens mij ook niet zo gek.

Ik besef dat het niet helemaal de xml-regels volgt, maar het geeft me wel een mogelijkheid om snel pagina's in elkaar te bouwen die niet zoveel informatie geven. De minder belangrijke pagina's dus. Zoals ik al zei: pagina's waar wel belangrijke content komt zullen dan ook zeker een eigen xml-notatie krijgen, maar om nou voor elke pietleuterige pagina een aparte xml-notatie en xsl-stylesheet te bedenken vind ik wel erg veel van het goeie.

Verwijderd

Hehe, tijdje geleden zo te zien, maaruh, wat ik doe:

Ik heb een XSL bestand met alle standaard elementen die ik binnen mijn XML gebruik. Een soort van library dus. Deze importeer ik gewoon in andere XSL stylesheets, zodat ik wel de layout van de pagina beheers, en niet steeds het wiel opnieuw uitvindt. Misschien praat ik gewoon langs de TS heen, maargoed ;).

Overigens: Wel es van DocBook gehoord? Is dat niet enigzins wat je zoekt? Is het trouwens niet voor mij, ben er twee weken mee bezig geweest, maar ik gebruikte de website-package, en die draaide toen (2 maandjes geleden ofzo?) nog niet echt lekker, hehe (understatement...). Ik heb dus gewoon alles zelf gedaan, dan hou ik makkelijker overzicht.

Dan maar wat onzinnig werk doen ;), leer wel veel over XSL zo :*)

- Peter

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Verwijderd schreef op maandag 07 januari 2002 @ 13:06:
ik beschrijf een webpagina, dat dat veel overeenkomsten heeft met html is dan volgens mij ook niet zo gek.

Ik besef dat het niet helemaal de xml-regels volgt, maar het geeft me wel een mogelijkheid om snel pagina's in elkaar te bouwen die niet zoveel informatie geven. De minder belangrijke pagina's dus. Zoals ik al zei: pagina's waar wel belangrijke content komt zullen dan ook zeker een eigen xml-notatie krijgen, maar om nou voor elke pietleuterige pagina een aparte xml-notatie en xsl-stylesheet te bedenken vind ik wel erg veel van het goeie.
Je moet het gewoon puur op een informatieve manier zien. Je moet in de XML echt niet gaan denken aan hoe het er uit komt te zien. Je kunt wel bijvoorbeeld iets een titel of inhoud van een artikel gaan noemen, maar als je al begint met indelen van rijen en kolommen etc. dan ben je niet goed bezig. Je kunt dan gewoon veel beter direct XHML schrijven met gebruik van CSS. Als je CSS op de juiste manier gebruikt kun je precies doen wat je wilt. Hier en daar een class of id en klaar.

Noushka's Magnificent Dream | Unity


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 15-05 11:47

chem

Reist de wereld rond

Ik denk dat de TS na 3 jaar wel klaar is...

Klaar voor een nieuwe uitdaging.

Pagina: 1

Dit topic is gesloten.