PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Qualidator Fehler



Spitfire
15.12.2010, 18:09
Über Sinn oder Unsinn dieses Tools lässt sich streiten, und trotzdem möchte ich dort Fehler, welche man schnell beheben kann auch beseitigen.

Nun stellt sich mir folgendes Problem bei meinem XTC mit YAML Template.

Um folgenden Code geht es:


{$FORM_ACTION}
<div id="boxSearchHeader">
{#heading_search#}
</div>
<div id="boxSearchText">
{$INPUT_SEARCH}
</div>
<div id="boxSearch">
{$BUTTON_SUBMIT}
</div>
{$FORM_END}

Bei diesem Elemt erscheint nun folgende Fehlermeldung:

"Explizite Bezeichnung von Eingabefeldern und Auswahlmenüs"

Infos darüber findet man unter:

Die explizite Bezeichnung von Eingabefeldern und Auswahlmens (mit dem LABEL-Element) [barrierefreies-webdesign.de] (http://www.barrierefreies-webdesign.de/knowhow/formulare/label.html)

Nur leider bekomme ich dies leider nicht getüdert mit der YAML Variante, habe schon folgendes versucht:


{$FORM_ACTION}

<div id="boxSearchHeader">

{#heading_search#}

</div>

<div id="boxSearchText">

<LABEL for=“Suche“>{$INPUT_SEARCH}</LABEL>

</div>

<div id="boxSearch">

{$BUTTON_SUBMIT}

</div>

{$FORM_END}



Doch leider auch erfolglos, Programmierer stehen jetzt wahrscheinlich die Haare zu Berge, aber ich finde echt keine Lösung das Problem zu lösen.

Es wird zwar unter oben angegebener Adresse im letzten Absatz auf folgendes hingewiesen:


Eine Identifizierung für INPUT-Felder der Art submit oder reset erfolgt über das Attribut value und der Art image über das entsprechende alt-Attribut. D.h., das LABEL-Element ist für diese drei zuletzt genannten Varianten des INPUT-Elements überflüssig.

jedoch finde ich dort kein Beispiel.

Hoffe hier hat jemand einj Tip für mich, wie man dieses "Problemchen" lösen kann.

Danke & Gruß

berny
16.12.2010, 09:39
Welchen Quellcode bekommst du da geliefert?

Spitfire
16.12.2010, 10:26
Hi Berny,

bei der ersten Variante, die bemängelt wird bekomme ich folgenden Code geliefert:


97 <div id="boxSearchText">
98 Explizite Bezeichnung von Eingabefeldern und Auswahlmenüs<input type="text" name="keywords" size="15" maxlength="30" />
99 </div>

Und bei der zweiten Variante mit dem <label> kommts zu einer "Fehlermeldung"


97 <div id="boxSearchText">
98 <The element 'div' in namespace 'http://www.w3.org/1999/xhtml' has invalid child element 'LABEL' in namespace 'http://www.w3.org/1999/xhtml'. List of possible elements expected: 'p, h1, h2, h3, h4, h5, h6, div, ul, ol, dl, pre, hr, blockquote, address, fieldset, table, form, a, br, span, bdo, map, object, img, tt, i, b, big, small, em, strong, dfn, code, q, samp, kbd, var, cite, abbr, acronym, sub, sup, input, select, textarea, label, button, noscript, ins, del, script' in namespace 'http://www.w3.org/1999/xhtml'.LABEL>Explizite Bezeichnung von Eingabefeldern und Auswahlmenüs<input type="text" name="keywords" size="15" maxlength="30" /></LABEL>
99 </div>

Das ist jetzt der Text, der im Qualidator ausgegeben wird, daher auch die Bemerkungen "Explizite Bezeichnung von Eingabefeldern und Auswahlmenüs"

berny
16.12.2010, 10:34
Ich denke, du hast da irgendwo einen Formatierungsfehler des Codes.
Der zweite Quelltext zeigt ja schon beim div einen Fehler an, was ja eigentlich gar nicht sein sollte.

Spitfire
16.12.2010, 10:42
Hi Berny,

besten Dank für deine Antwort, darum geht es ja gerade :) Die zweite Variante war ein Test von mir, analog zu der Anleitung von barrierefreies-webdesign den Code zu verändern, das dieser noch fehlerhaft ist ist mir bewusst, daher hatte ich ja die Frage hier gestellt, ob einer weiß, wie ich den Code aus dem ersten Beispiel korrekt umsetze, so das er für den Qualidator konform ist.

berny
16.12.2010, 13:12
Ich meinte eher, dass dein script ihrgendwo ein Zeichen falsch übersetzt oder sogar setzt, eben die Formatierung der Datei ansich irgendwie nicht stimmt und deshalb falsche Zeichen anzeigt.
Lass dir in deinem Editor mal alle Zeichen anzeigen, also Tabs usw usw usw....
Vielleicht erkennst du dort den Fehler.

Ev stimmt auch der header nicht.

schick mir mal eine Url dieses scriptes per PM..

HarryBoo
16.12.2010, 13:47
Schau mal hier nach, da wird das Formularelement Label sehr gut erklärt.
SELFHTML: HTML/XHTML / Formulare / Gruppierung von Elementen und Label fr Elemente (http://de.selfhtml.org/html/formulare/strukturieren.htm#label)
Ich hoffe das hilft Dir weiter.

berny
16.12.2010, 15:25
<div id="boxSearchText">

<LABEL for="keywords">Suche: </LABEL>{$INPUT_SEARCH}

</div>


Wobei ich denke, dass dies ebenfalls nicht funktioniert, weil der Input-Tag kein ID-Element hat, diese müßte gleich heißen wie das for-Element, ich glaube nicht, dass das Name-Element ausreicht.

Trotzdem stört mich der Fehler beim div....

Spitfire
16.12.2010, 21:27
Hey Rolf, Hey Berny,

die Variante von Berny führt leider ebenfalls zum Fehler, anbei mal der komplette Quellcode, der durch den Qualidator ausgegeben wird:

<form id="quick_find" action="http://www.wohnbedarf-pies.de/advanced_search_result.php" method="get">
<div id="boxSearchHeader">
Suche
</div>
<div id="boxSearchText">
<LABEL for=XHTML Error: '�' is an unexpected token. The expected token is '"' or '''. Line 94, position 14.�keywords�>Suche: </LABEL>Explizite Bezeichnung von Eingabefeldern und Auswahlmenüs<input type="text" name="keywords" size="15" maxlength="30" />
</div>
<div id="boxSearch">
<input type="image" src="templates/ybt_btt3_006-r/buttons/german/button_quick_find.gif" alt="Suchen" title=" Suchen " />
</div>
</form>

Rot markiert die Stelle, die durch das <LABEL> Element verändert werden sollte...

Merkwürdige Sache, finde leider auch im YAML Forum keinerlei Hilfestellung hierüber, werde vielleicht mal den Herrn Tessmann kontaktieren, der müsste sich ja mit seinem Template am besten auskennen..

berny
17.12.2010, 09:10
Ist nicht merkwürdig, das ", welches du im Script verwendest, ist kein " im herkömmlichen Sinn, deshalb erkennt der Validator das als Fehler.
Es stimmt deine Formatierung nicht. (Deshalb auch das �)
Mir ist das oben schon mal aufgefallen, dachte aber, dass du das mit Absicht kursiv geschrieben hast.

Verwende mal einen anderen Editor, oder verwende beim for kein " sondern ein ' (Das über der Raute!)

(hab übrigens gesehen, dass bei meinem obigen Code auch ein kursives " war, habs mal ausgebessert.)

Bezüglich dem "Explizite Bezeichnung von Eingabefeldern und Auswahlmenüs" denke ich, dass dies nicht funktionieren wird, wenn du im Input-Feld keine id angibst. Versuche das ganze einfach mal fix gecodet in das script einzubinden, also ohne {$INPUT_SEARCH}, sondern mit <input type="text" name="keywords" size="15" id="keywords" maxlength="30" /> und schau dann, welchen Fehler es ausspuckt.

Spitfire
17.12.2010, 10:41
Hi Berny,

danke für den Tip, aber an den " liegts leider auch nicht, egal ob " oder ', die Fehlermeldung bleibt identisch.

Muss heute mal schauen, wo und wie genau sich {$INPUT_SEARCH} zusammensetzt und definiert. Eventuell besteht da die Möglichkeit, dies korrekt zu definieren, blicke da leider nicht mehr weiter durch,
habe mich auch mal an den Template Ersteller im YAML Forum gewandt, der müsste ja am ehesten Wissen, wo und wie sich {$INPUT_SEARCH} zusammensetzt.

Besten Dank schonmal vorab, sollte ich eine Lösung finden werde ich mich melden!

HarryBoo
17.12.2010, 10:52
Da Du einen XT:C Shop hast, könnte mir vorstellen das ein im Quellcode verbautes HTML Dir dazwischen funkt.
Ist ein altes Thema, einen XT:C valide zu bekommen ist sehr schwer aus dem oben genannten Grund.

Spitfire
17.12.2010, 11:04
Hey Rolf, das mag natürlich durchaus sein, aber versuchen darf mans ja :)

Habe mal geschaut, wie sich die INPUT_SEARCH zusammen setzt und habe in der template/source/boxes/search.php folgendes gefunden:

$box_smarty->assign('INPUT_SEARCH', xtc_draw_input_field('keywords', '', 'size="15" maxlength="30"'));

Vielleicht lässt sich dies ja umschreiben...

berny
17.12.2010, 11:47
$box_smarty->assign('INPUT_SEARCH', xtc_draw_input_field('keywords', '', 'size="15" maxlength="30"'));auf
$box_smarty->assign('INPUT_SEARCH', xtc_draw_input_field('keywords', '', 'id="keywords" size="15" maxlength="30"')); ändern.
Damit hast zumindest einmal das id drinnen.

Bezüglich Valide wirds sowieso schwer:
http://validator.w3.org/check?uri=http%3A%2F%2Fwww.wohnbedarf-pies.de%2Fadvanced_search.php&charset=%28detect+automatically%29&doctype=Inline&group=0&user-agent=W3C_Validator%2F1.1

und das vermutlich auf etlichen Seiten.....

Spitfire
17.12.2010, 11:54
Hey Berny,

diese Variante habe ich auch schon ausprobiert, angezeigt wird die id im Quelltext auch ohne Fehler, aber ändern tut sich noch nichts, denke um das wirklich zu validieren wünscht der Qualidator das <LABEL>...


Warte mal ab, ob aus dem YAML Forum noch ein interessanter Ansatz kommt...

Besten Dank für deine Hilfe!

Spitfire
20.12.2010, 17:09
Dank Björn Tessmann aus dem YAML Forum gehts einen Schritt weiter voran, doch leider ist der Qualidator damit immer noch nicht ganz zufrieden. Poste mal den Lösungsansatz, eventuell kann dieser ja doch noch erfolgreich zu Ende geführt werden, denn diesen Fehler gibt es auch bei allen weiteren Eingabefeldern, so zum Beispiel neben dem "Suche" Feld auch bei der Anmeldung zum Shop.

<label for=“keywords“>Suche: </label>{$INPUT_SEARCH|replace:'name="search"':'name ="search" id="keywords"'}

berny
20.12.2010, 18:11
Ist eh im Prinzip das gleiche Ergebnis, wie ich oben gepostet habe, aber mit dieser Variante lassen sich zumindest die Felder besser steuern.

Und trotzdem; warum hast du hie und da kursive " (for=“keywords“) und manchmal gerade " (name="search") ?
Ist das jetzt nur hier im Forum oder auch bei dir im Script so?

Xml ist ein Dokumentenformat, welches genaue Regeln hat.
Diese mußt du einhalten, dann passt das.
Da aber xt:c keinen wirklichen xml-konformen Code liefert, heißt es, alles manuell auszubessern.

Viel Spass.....

PS.: Ein xml-konformer Code ist sicherlich gut, aber nicht lebensnotwendig! (nur so zum Nachdenken)

Spitfire
21.12.2010, 07:48
Servus Berny,

nochmals danke für dein Statement. In dem Punkt, das xhtml Konformer Code sicherlich gut, aber nicht lebensnotwendig ist gebe ich dir voll und ganz Recht, hatte ich ja auch zu Beginn dieses Threads geschrieben, ebenso über Sinn und Unsinn des Qualidators. Hatte die Anfrage gestellt, da dieser eine Fehler in mehreren Fällen vorkommt, daher dachte ich, sollte sich eine Lösung finden, so wären diese Fehler schnell behoben.

Das es nun doch so umfangreich und kompliziert wird, damit hatte ich nicht gerechnet, glaube lege das Thema Qualidator lieber zu den Akten und kümmere mich trotzdem nochmal um den anderen XHTML Fehler, denn dieser hängt unmittelbar mit der manufacturers_box zusammen, werde dann mal im HTML Code statt dem PHP Code schauen.

Mit den " und " in kursiv kann ich mir auch nicht erklären, habe die Dateien mit Notepad ++ als auch mit dem Dreamweaver bearbeitet, wenn ich die Dateien per FTP hochlade werden die " auch als " ausgegeben und nicht als "... Naja, dieses Thema werde ich hier mal beenden, vielen Dank für Eure Mithilfe!