# Element "a" hat kein Attribut "target" ?



## jccTeq (19. Januar 2004)

Hi Leute,

ich bin gerade dabei, meine Website Schritt für Schritt durch einen HTML-Validator der W3C zu jagen. Das merkwürdige ist, daß mir der Validator mit DOCTYPE HTML 4.01 Strict  anzeigt, daß das Element "a" kein Attribut "target" besitzt... was ist denn das für ein Humbug? Natürlich besitzt das Element "a" das Attribut "target"... wie sollte man sonst Sites hinter Hyperlinks in neuen Fenstern anzeigen lassen (außer per Javascript)?

Ich habe einen Hyperlink (habe mehrere, aber bei diesem einen fällt es auf) auf meiner Seite, der auf eine externe Seite verweist (Banner-Exchange). Dieser Hyperlink besitzt im Code das Attribut "target", damit die externe Seite in einem neuen Browserfenster angezeigt wird. Soweit klar, oder?! Nun will ich die Seite mit diesem Hyperlink validieren lassen von der W3C bzw. ihrem Validator. Der meckert nun aber rum, wie oben beschrieben. Was ist daran falsch?

Was ähnliches meckert er im Element "p" an, daß das Element kein Attribut "align" kennt... genau so'n Blödsinn. Was mache ich flasch? Falscher DOCTYPE?


```
<p align="center">
<a href="http://www.geileKarre.de/clublinks/?referer_id=xxxx">
<img style="border: 0;" alt="banner" src="http://www.geilekarre.de/images_banner/clublinks_81x31.gif" width=81 height=31>
</a>
</p>
```


Danke!

Gruß, Hendrik


----------



## Gottox (19. Januar 2004)

HTML Strict ist halt sehr fehleranfällig... Schreib doch lieber in Transitional... (http://selfhtml.teamone.de/html/allgemein/grundgeruest.htm)
Aber zu deinem Problem:

```
<a href="http://www.geileKarre.de/clublinks/?referer_id=xxxx">
```
Der Validator hat recht... Ich seh kein target-Attribut...

```
<a href="http://www.geileKarre.de/clublinks/?referer_id=xxxx" target="_blank">
```
So is richtig...

Mit p und align: HTML Strict kennt solche Attribute nicht mehr... Kannst statt dessen style="text-align:center" benutzen


----------



## jccTeq (19. Januar 2004)

Nee, er meckert den anderen an... sorry, ich meinte den da:


```
<a href="http://click.listinus.de/topsite.php?id=xxxxx" target="_blank">
```

den da meckert er an. Sorry. Mein Fehler. In der Zeile zeigt er das Attribut "target" als Fehler an. Aber okay, ich werd das mal mit "transitional" versuchen. 

Danke!

Gruß, Hendrik


----------



## Peter Bönnen (19. Januar 2004)

Brauchst dir nur mal die DTD's anschauen. Da wirst du feststellen, dass das target Attribut in der Strict DTD wirklich nicht enthalten ist, sondern nur in Transitional und Loose.

Entsprechender Auszug der HTML 4.01 Strict DTD:
	
	
	



```
<!--================== The Anchor Element ================================-->

<!ENTITY % Shape "(rect|circle|poly|default)">
<!ENTITY % Coords "CDATA" -- comma-separated list of lengths -->

<!ELEMENT A - - (%inline;)* -(A)       -- anchor -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
  type        %ContentType;  #IMPLIED  -- advisory content type --
  name        CDATA          #IMPLIED  -- named link end --
  href        %URI;          #IMPLIED  -- URI for linked resource --
  hreflang    %LanguageCode; #IMPLIED  -- language code --
  rel         %LinkTypes;    #IMPLIED  -- forward link types --
  rev         %LinkTypes;    #IMPLIED  -- reverse link types --
  accesskey   %Character;    #IMPLIED  -- accessibility key character --
  shape       %Shape;        rect      -- for use with client-side image maps --
  coords      %Coords;       #IMPLIED  -- for use with client-side image maps --
  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
  onfocus     %Script;       #IMPLIED  -- the element got the focus --
  onblur      %Script;       #IMPLIED  -- the element lost the focus --
  >
```
Direkt am Anfang der DTD steht auch, was das generell für einen Sinn hat,  gewisse Attribute wegzulassen:

```
This is HTML 4.01 Strict DTD, which excludes the presentation 
    attributes and elements that W3C expects to phase out as 
    support for style sheets matures. Authors should use the Strict
    DTD when possible, but may use the Transitional DTD when support
    for presentation attribute and elements is required.
```
In dem konkreten Fall heißt das, dass das target Attribut einfach nicht mehr erwünscht ist, da es schlichtweg nicht der Strukturierung eines Dokumentes dient, sondern in Verbindung mit einem Frameset dessen Präsentation. In XHTML ist  es schon komplett verbannt. Einzelne Frames sollten beim Benutzen einer Strict DTD per JavaScript addressiert werden. Das ist zwar nicht schön, aber das sind Frames auch nicht.

Ansonsten gibt's eben wirklich noch das 4.01 Transitional oder Loose.

Peter


----------



## jccTeq (19. Januar 2004)

Ich nutze auch keine Frames auf meiner Seite, hätte aber eben gern, daß die Seite, die sich hinter dem besagten Link verbirgt, in einem neuen Fenster angezeigt wird. Hmm... wegrationalisiert. Okay, dann eben Transitional. Ist ja kein Problem.

Sagt mal, gibt es eigentlich ein schnelleres Verfahren, eine auf PHP und MySQL basierende dynamische Website zu validieren, als jede mögliche Seite einzeln zu validieren? Ich mein, ich hab jetzt die Startseite validiert. Dann müsste ich mich durch sämtliche Menüverästelungen hangeln und jede Seite einzeln validieren. Geht das nicht auch einfacher und schneller?

Danke!


Gruß, Hendrik


----------



## Gottox (20. Januar 2004)

Klar... Schreib dir ein Script dafür...


----------



## jccTeq (20. Januar 2004)

Du meinst, jedes Template einbinden und mit Beispiel-Daten füllen? Klingt nicht schlecht, die Idee.


----------



## Gottox (20. Januar 2004)

Jo... Oder du schreibst alle Seiten die du Prüfen willst in einen Array und jagst sie nacheinander durch den W3C Validator. Die Ergebnissseiten kannst du ja dann speichern...

Sowas in PHP

```
$url = "http://www.ich-kenn-den-link.net/validator?url="
$valid[] = 'url1';
$valid[] = 'url2';
$valid[] = 'url3';
$x = -1;
while($valid[++$x])
{
$erg = file($url . $valid[$x]);
$file = fopen('test'.$x.'.html','w');
fwrite($file, $erg, strlen[$erg]);
fclose($file);
}
```
Wie immer ungetestet...

// Nachtrag:

Mir war grad ein bisschen Langweilig...

```
<script language="javascript">
var url = "http://www.ich-kenn-den-link.net/validator?url="
valid = new Array('url','url','url','url');
var x = -1;
while(valid[++x])
{
document.write('<iframe src="'+url+valid[x]+'" width="100%"></iframe>')
}
</script>
```


----------

