XHTML valider Code

Gesperrt
ClemensSchnitzler
Beiträge: 137
Registriert: Di 17. Aug 2004, 12:32
Kontaktdaten:

XHTML valider Code

Beitrag von ClemensSchnitzler » Di 11. Sep 2007, 06:57

Guten morgen,

momentan "baue" ich mir eine eigene Webseite. Hierzu setze ich contenido 4.6.15 mr ein. Das Modul Artikel Auto-Seitenwechsel von polycoder kommt ebenfalls zum Einsatz.

Auf der ersten Seite habe ich eine Tabelle eingesetzt. Nachdem ich im Html-Code <ins> vor bzw. </ins> nach der Tabelle eingefügt habe habe ich diese Seite valide hinbekommen. Die Folgeseite bekomme ich jedoch nicht valide. Zu sehen hier: http://c-schnitzler.eu/ueber-mich/ueber ... tml?page=1

Was mich wundert ist, dass Tags in der falschen Reihenfolge geschrieben werden, so kommt z.B. ein eröffnentes <p> vor einem abschliessenden </a>. Umgekehrt wäre es richtig.

Vielleicht könnt ihr mir helfen. Benutze ich den komplett falschen DOCTYPE, habe ich einen Fehler im CSS oder liegt es am Code des Moduls?

Vielen Dank für Eure Hilfe.

Grüße

Clemens
Zuletzt geändert von ClemensSchnitzler am Di 11. Sep 2007, 08:47, insgesamt 1-mal geändert.

delinquent
Beiträge: 184
Registriert: Fr 17. Aug 2007, 12:15
Kontaktdaten:

Beitrag von delinquent » Di 11. Sep 2007, 08:12

Wenn die Tags falsch herum geschlossen werden, liegt das wohl kaum an falschem CSS oder falscher Dokumenttyp Deklaration: CSS "sagt" ja nur, wie alles aussehen soll und die DTD, was valide ist.

Das kann letztlich mehrere Ursachen haben (je nach Verwendung): Zum einen kann ein Modul auf Modul-Templates zurückgreifen, die einfach nicht valide sind, zum anderen kann, wenn ein Modul selbst Code ausgibt (der Sinn oder Unsinn sei an dieser Stelle nicht in Frage gestellt), dieses natürlich nicht validen Code erzeugen, letztlich kann Dein Layout nicht valide sein oder aber es ist ein Bug bspw. im TinyMCE.

Auf der Seite, die Du als Link gepostet hast, sehe ich nur diesen Teil hier als Problem:

Code: Alles auswählen

<h2 class="content">... ein kleiner Auszug aus meinem Lebenslauf</h2>

<p></a>Nach der...
Da ist einfach ein </a>-Tag zu viel. Wenn das aus nem CMS_HTML-Modul kommt, dann liegt's wahrscheinlich an TinyMCE oder dessen Verwendung. Und was der Editor macht oder nicht, kann ich Dir leider nicht sagen...

ClemensSchnitzler
Beiträge: 137
Registriert: Di 17. Aug 2004, 12:32
Kontaktdaten:

Beitrag von ClemensSchnitzler » Di 11. Sep 2007, 16:07

Genau die Stelle mit <p> vor </a> habe ich zitiert.

Ich benutze neben den Standardmodulen das hier von stese http://www.contenido.org/forum/viewtopi ... tenwechsel sonst nichts. Also kann es nur der Tinymce sein?

Kann mir jemand helfen wie ich das in den Griff bekomme?

Vielen, vielen Dank!

Gruss

Clemens

edit: ich arbeite mit Firefox 2.0.0.6 sowohl am Mac als auch am Windows-PC

holger.librenz_4fb

Was ist denn da genau?

Beitrag von holger.librenz_4fb » Do 13. Sep 2007, 14:03

Hallo Clemens.

Was sollte denn, laut Layout / Template an dieser Stelle alles sein? Ist da evtl. im Layout / Modul-Template eine Alt-Last drin geblieben?

Gruß,
Holger

ClemensSchnitzler
Beiträge: 137
Registriert: Di 17. Aug 2004, 12:32
Kontaktdaten:

Beitrag von ClemensSchnitzler » Fr 14. Sep 2007, 05:30

Mein Layout sieht folgendermaßen aus:

Code: Alles auswählen

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">



<head>
<title>Clemens Schnitzler - Portfolio</title>

<link rel="shortcut icon" href="images/gfx/favicon.ico" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="css/thickbox.css" type="text/css" media="screen" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/thickbox.js"></script>

</head>

<body>


<div id="gesamt">


	<div id="header">

		<h1><span>Clemens Schnitzler - Portfolio</span></h1>

	</div>

	<div id="navigation">

		<ul>
		CMS_CONTAINER[50]
		</ul>

	</div>

	<div id="navigation2">

		<ul>CMS_CONTAINER[40]
		</ul>

	</div>


	<div id="content">

		<div class="wrapper">

			<ul class="mapping">
CMS_CONTAINER[110]
			</ul>
	
			CMS_CONTAINER[10]
			CMS_CONTAINER[12]

			CMS_CONTAINER[15]
		
		</div>
	
	</div>

	<div id="footer">

		<p class="copyright">&copy; 2007 by <a href="kontakt.php">C. Schnitzler</a></p>
		<p class="valid">
			<a href="http://validator.w3.org/check?uri=referer"><img src="images/gfx/validxhtml.png" alt="valid XHTML 1.0" /></a>
			<a href="http://jigsaw.w3.org/css-validator/validator?uri=http://c-schnitzler.eu/cms/css/style.css"><img src="images/gfx/validcss.png" alt="valid CSS 1+2" /></a></p>

		<ul class="footernavi">CMS_CONTAINER[30]</ul>

	</div>

</div>




</body>
</html>
Das Ganze spielt sich in <div class="wrapper"> ab und betrifft CMS_CONTAINER[15]. Diesem Container ist das Modul Article Semi-AutoPageBreak zugewiesen. Für die Modulausgabe habe ich den folgenden Code aus dem Modul-Thread verwendet, da ich den Originalcode überhaupt nicht zu laufen bekomme.

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :    Article Semi-AutoPageBreak
* Author(s)  :    Stefan Seifarth <info@polycoder.de>
* Copyright  :    www.polycoder.de / www.htcm.de
* Created    :    2006-06-17
************************************************/

// include pagebreak class
cInclude("frontend", "includes/class.articlepagebreak.php");

$strAnchorName = "CMS_VALUE[210]";
$strArticle    = "CMS_HTML[1]";

if ($edit) {
   print $strArticle;
} else {

$strDelimiter = '<a name="' . $strAnchorName . '"></a>';

// initialize class
// parameter delimiter for article spliting
$oArticlePageBreak = new ArticlePageBreak( $strDelimiter );

// set article
$oArticlePageBreak->setArticle( $strArticle );

// set current page for output
$intCurrentPage = 0;
if ( isset($_REQUEST[$oArticlePageBreak->strPageParameter]) && !empty($_REQUEST[$oArticlePageBreak->strPageParameter]) && (int)$_REQUEST[$oArticlePageBreak->strPageParameter] > 0 ) {
   $intCurrentPage = (int)$_REQUEST[$oArticlePageBreak->strPageParameter];
}
$oArticlePageBreak->setCurrentPage($intCurrentPage);

// set Textlinks
$oArticlePageBreak->setTextFirstPage( mi18n("Erste Seite") );
$oArticlePageBreak->setTextPreviousPage( mi18n("Vorhergehende Seite") );
$oArticlePageBreak->setTextNextPage( mi18n("Nächste Seite") );
$oArticlePageBreak->setTextLastPage( mi18n("Letzte Seite") );
$oArticlePageBreak->setTextPreviousRange( mi18n("Zurück") );
$oArticlePageBreak->setTextNextRange( mi18n("Weiter") );
$oArticlePageBreak->setTextPageTitle( mi18n("Gehe zu Seite ") );

// output the current article part
print $oArticlePageBreak->getArticle();

print '<br /><br />';

// get pagination for article
print $oArticlePageBreak->getPagination();



/*
// xml output

// add custom xml tags
// (class xmlObject is located in class.articlepagebreak.php)
//
$oHeadline = new xmlObject(
  "headline", // tag name
  "",  // attributes (given as array)
  "headlinetext",  // content of element
  true  // usage of cdata for content
);
// store the above configured tag into class
$oArticlePageBreak->setXMLAdditionalContentTag($oHeadline);

// output complete xml
print $oArticlePageBreak->getXMLComplete();
*/
}
?>
Im HTML-Quelltexteditor sieht meine Eingabe so aus:

Code: Alles auswählen

<p>Lindy`s Cheese Cake halten die Amerikaner irrt&uuml;mlich f&uuml;r einen
Ureinwohner ihres sch&ouml;nen Landes; er stammt aus dem Schw&auml;bischen.
Dagegen h&auml;tten sie mit Coca-Cola beinahe den Goldpokal gewonnen, w&auml;re
da nicht auch die S&uuml;&szlig;reserve des deutschen Weinbaus. Den 1.Preis,
unverg&auml;nglichen Ruhm und das Bewu&szlig;tsein, endlich der Welt gezeigt zu
haben, da&szlig; sie kreativer sind als der nichtdeodorierte Teil der
Menschheit, errangen sie schlie&szlig;lich mit der Erfindung des Hamburgers<br /><a title="pagebreak" name="pagebreak"></a><br />Lindy`s Cheese Cake halten die Amerikaner irrt&uuml;mlich f&uuml;r einen
Ureinwohner ihres sch&ouml;nen Landes; er s
Hier schein alles richtig zu sein. Wenn ich die Seite im Browser aufrufe scheint auf den ersten Blick auch alles richtig. Aber der Code ist nicht valide. Hier der entsprechende Code im Auszug:

Code: Alles auswählen

				<div class="wrapper">

			<ul class="mapping">
<li>::<a href="/" class="1">Home</a> ::<a href="/ueber-mich/" class="1">Über mich</a></li>
			</ul>
	
			<h1 class="content">Wer ich bin ...</h1>

			<h2 class="content">... ein kleiner Auszug aus meinem Lebenslauf</h2>

			</a>Lindy`s Cheese Cake halten die Amerikaner irrt&uuml;mlich f&uuml;r einen
Ureinwohner ihres sch&ouml;nen Landes; er stammt aus dem Schw&auml;bischen.
Dagegen h&auml;tten sie mit Coca-Cola beinahe den Goldpokal gewonnen, w&auml;re
da nicht auch die S&uuml;&szlig;reserve des deutschen Weinbaus. Den 1.Preis,
unverg&auml;nglichen Ruhm und das Bewu&szlig;tsein, endlich der Welt gezeigt zu
haben, da&szlig; sie kreativer sind als der nichtdeodorierte Teil der
Menschheit, errangen sie schlie&szlig;lich mit der Erfindung des Hamburgers<br /><br /><a href="/ueber-mich/ueber-mich.html?page=0">Erste Seite</a>

<a href="/ueber-mich/ueber-mich.html?page=0">Vorhergehende Seite</a>
<a href="/ueber-mich/ueber-mich.html?page=0" title="Gehe zu Seite 1">1</a>
 | <a href="/ueber-mich/ueber-mich.html?page=1" title="Gehe zu Seite 2"><strong>2</strong></a>
 | <a href="/ueber-mich/ueber-mich.html?page=2" title="Gehe zu Seite 3">3</a>
 | <a href="/ueber-mich/ueber-mich.html?page=3" title="Gehe zu Seite 4">4</a>
<a href="/ueber-mich/ueber-mich.html?page=2">Nächste Seite</a>

<a href="/ueber-mich/ueber-mich.html?page=3">Letzte Seite</a>

		
		</div>
Hier ist vor dem Text (Lindy's ...) eindeutig das </a> zuviel. Dies wird durch den Validator auch angemeckert. Nur wo muss ich im Code eingreifen um dies an dieser Stelle nicht zu haben?

Außerdem bekomme ich im Validator noch zwei Fehler angemeckert:

Code: Alles auswählen

#  Error  Line 104, Column 6: XML Parsing Error: Opening and ending tag mismatch: body line 23 and div.

</div>

✉
# Error Line 109, Column 7: XML Parsing Error: Opening and ending tag mismatch: html line 4 and body.

</body>
Auch hier kann ich keinen Fehler feststellen.

Altlasten scheinen keine vorhanden zu sein. Ich habe gestern abend das Modul dektiviert, gelöscht, die Tabelle con-code gelöscht und dann das Modul neu eingespielt und ins Template eingebunden. Das Ergebnis ist das gleiche, auch wenn die Seite jetzt vom Inhalt her anders aussieht.

Meines Erachtens kann es nur an dem Modul liegen. Wenn ich das Standard-Text-Modul einbinde, ist die Seite valide.

Gruss

Clemens

Gesperrt