2010-12-22 12 views
4

Ich lese anscheinend in Kreisen, oder vielleicht verstehe ich einfach einige der Konzepte hier nicht. Ich überarbeite eine Reihe von PHP-Vorlagenklassen, die zuvor einige ausgefallene reguläre Ausdrücke verwendet haben, um Dokumente und Regionen von Dokumenten zu kombinieren und zu duplizieren, um eine Ausgabeseite zu erzeugen. Ein Beispiel für meine früheren Verfahren (aus Gründen der Vollständigkeit):Arbeiten mit XML, Schemas, DOM, PHP, usw.

<div id="myId"> 
    <!-- {{ region:myRegion }} --> 
     <div class="myClass"> 
      <h1>{{ var:myHeading }}</h1> 
      <h2>{{ var:myDatetime format:datetime(Y-m-d H:i:s) }}</h2> 
      <p>{{ var:myText format:maxLength(300) }}</p> 
     </div> 
    <!-- {{ region:myRegion }} --> 
</div> 

Anyways, es funktioniert ganz gut, aber ich will es wirklich auf die nächste Ebene zu bewegen, und dachte, dass logisch das Markup werden erstrecken würde selbst immer so etwas wie:

<div id="myId"> 
    <zuq:region name="myRegion"> 
     <div class="myClass"> 
      <h1><zuq:var name="myHeading" /></h1> 
      <h2><zuq:var name="myDatetime" format="datetime" param="Y-m-d H:i:s" /></h2> 
      <p><zuq:var name="myText" format="maxLength" param="300" /></p> 
     </div> 
    </zuq:region> 
</div> 

ich habe die W3 Spezifikationen gelesen, und sogar die W3Schools Tutorials zu verschiedenen relevanten Technologien wie XML-Schema für die Template-Spezifikationen zu schreiben. Offensichtlich möchte ich in allen verwendeten Namespaces alles gut geformt und gültig halten. In erster Linie wird dies in Kombination mit XHTML-Markup verwendet.

Anyways, kann mir jemand Punkt in Richtung einige gute Lektüre auf Verständnis XML-Namens, die Grenzen und Best Practices von Mischnamensräume, und vor allem nehme ich an, die Arbeit mit PHP/DOM/XML. Gibt es irgendwelche kritischen Mängel in meinem Ansatz hier, die jeder sehen kann? Es scheint nicht, dass PHP eine besonders leistungsfähige Implementierung für die Arbeit mit Namespaced Markup-Dokumenten hat, sei es durch DOMDocument (und Brüdern) oder SimpleXML.

Alle Ratschläge, Material Anregungen oder Kritik zu lesen ist willkommen!


Edit: Falls jemand neugierig ist, Elemente aus dem Zūq Namespace sollten zum Zeitpunkt der Ausgabe Rendering nicht vorhanden sein, analysiert worden ist und auf andere Weise entfernt. Neben der guten Praxis, Dokumente gültig zu halten, beabsichtige ich jedoch, das in den Vorlagen vorhandene Markup zu nutzen, damit Administratoren über einen CMS WYSIWYG-Editor Seiten schnell bearbeiten können.

+2

Ihre einzige Schuld, hier ist W3Schools Tutorial gefolgt haben. Diese Seite hat nichts mit W3C zu tun und produziert wirklich schlechte _Informationen. – Shikiryu

+0

Danke ** ClemDesm **; Ich habe es nur als eine von vielen Einsteigerreferenz für XML-Schema verwendet, da es mir etwas ungewohnt ist, aber ich werde meine Lektüre woanders konzentrieren. – Dan

+0

Ich kann hier nicht viel helfen, da ich keine guten Tutorials zu XML-Namespaces und -Schemas kenne, aber ich habe das Gefühl, dass man versucht, einen fremden Namespace mit xhtml zu mischen das tiefe Ende.Die Kombination der zusätzlichen Beschränkungen durch die xhtml-Anwendung von xml, gepaart mit der riesigen Menge an Fehlinformationen über xhtml im Web (und ja, W3Schools ist hier * besonders * schuldig) wird Ihre Lernkurve viel steiler als nötig machen. Ich würde einen guten XML-Editor (z. B. XMLSpy, wenn Sie es sich leisten können) ergattern und zuerst von xhtml experimentieren. – Alohci

Antwort

2

Namespaces sind wirklich ein sehr einfaches Konzept, das irgendwie aus dem Rahmen gerät. Ein gutes Tutorial zu XML-Namespaces finden Sie unter http://www.xml.com/pub/a/1999/01/namespaces.html.

Für den Umgang mit Namespaced XML von PHP funktioniert die DOM Schnittstelle sehr gut. Zum Beispiel können Sie getElementsByTagNameNS, können Sie lookupNamespaceURI, look up a given URI's prefix ...

Darüber hinaus stellt sich die Frage unglaublich subjektiv fühlt und vage, so dass, wenn Sie es oder senden Sie weitere Fragen bearbeiten sorgen, dass es zu verfeinern, vielleicht können Sie einige bekommen konkretere Hilfe.