uio--WebPageHeader-Module
uio--WebPageMain-Module
Ein ce:Realm Instanz kapselt alle Objekte, Gruppen, Nutzer und deren Berechtigungen und lässt sich dahingehend am ehesten als eine Art in sich geschlossenes Datenmodell bezeichnen.

Overview

Das <ce:WebPage> ist eines der wichtigsten CEs in UDS: Mit diesem Content Element ist es möglich, eine Einzelseite einer Webseite zu definieren.

Damit ein solche Seite allerdings anschließend auch im Browser adressiert werden kann, muss diese <ce:WebPage> Instanz noch mit einer <Route> in der <RouteDefinition> verlinkt werden.

Realm und RealmNodes

Für die meisten Content Manager, Editoren und Redakteure ist der RealmNode der oberste Knoten in der Informations- und Datenstruktur welche Sie deklarieren. Wenn man Ihnen kein Realm zugewiesen haben zeigen wir Ihnen hier, wie Sie einen RealmNode deklarieren.


WebPage(s) für RealmNodes

Wenn Ihnen jemand adminstrativ als Integrator eine bestimmte Datei-, Ordner- und Dokumentstruktur schon angelegt hat, und es nur noch darum geht, das passende WebPage-Dokument zu finden, welches dargestellt wird, wenn man im Browser direkt ein Realm adressiert, so handelt es sich hierbei um die RealmNode.xml Datei in Ihrem Realm-Ordner.

Die Ordner- und Dateistruktur werden im weiteren Verlauf dieser Erläuterung zu Realm und RealmNodes erläutert.

Man kann einen RealmNode wie auch viele andere Knoten (engl. Nodes) in der Daten- und Informationstruktur mit einem Browser adressieren, wenn man beispielsweise ein WebPage dokumentiert anlegt, in welchem Sie die Inhalte deklarieren, welche bei der Adressierung des RealmNode angezeigt werden sollen.

NEUER XML HEADER AM 20.11.2023

Mit Version 1.3.5.20 werden die example.com URLs bei den Namespace-Deklarationen durch SNEWMEDIA Adressen ersetzt.



<?xml version="1.0" encoding="UTF-8"?>
<doc
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://snewmedia.com/snm/uio3/specs/ce ce.xsd"
  xmlns:ce="http://snewmedia.com/snm/uio3/specs/ce"
  xmlns="http://snewmedia.com/snm/uio3/specs/default"
>
<!-- xsi:schemaLocation="http://www.snewmedia.com/snm/uio3/specs/ce ce.xsd" -->
<!-- xmlns:ce="http://www.snewmedia.com/snm/uio3/specs/ce" -->
<!-- xmlns="http://www.snewmedia.com/snm/uio3/specs/default" -->     

</doc>   

                        

Code

Der nachfolgende Programmcode zeigt eine typische Grundstruktur ein WebPage-Dokuments.



<?xml version="1.0" encoding="UTF-8"?>
<doc 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.example.com/ce_ALT ce.xsd" 
    xmlns:ce="http://www.example.com/ce_ALT"
    xmlns="http://example.com/default_ALT" 
>
  <webpage>
    <properties>
      <name>Willkommen</name>
      <title>Willkommen</title>
      <description>Startseite</description>
      <isPartOf>
        <WebSite ref="/Realm/example.com/_nodes/WebSite__example"></WebSite>
      </isPartOf>
      <language_key>de</language_key>
    </properties>
    <contents>
      ...
      <ce:ContentReference uri="/Realm/example.com/_ContentInstances/cblock-example-******.xml"/>
    </contents>    
  </webpage>    
</doc>    
    

                        

Erläuterung

XML-Header und doc-Element

Die ersten 7 Zeilen beginnend mit <?xml ...><doc ...> beinhalten den Programmcode wie er für XML-Dateien mit XML-Syntax gem. W3C üblich ist.

Anmerkung: Die gesamte Entwicklung des Systems basiert auf grundlegenden Dateiformaten, Programmiersprachen und Empfehlungen des W3C. Diese Syntax haben wir uns also nicht ausgedacht, um irgendwem das Leben schwer zu machen: XML ist ein Standardformat welches weltweit im Einsatz ist. Oftmals merken Sie es gar nicht, weil die Dateien andere Ändungen haben, gezipped wurden und/oder Sie Dateien immer in Programmen verwenden, ohne da mal hineinzuschauen.

WebPage-Element

Der Programmcoe zwischen <WebPage><doc ...> und </WebPage><doc ...>, in diesem Beispiel noch als <webpage>..</webpage> deklariert, definiert, welches oder bei mehreren Elementen welche Objekte als Information/Daten hier im Dokument definiert werden.

Damit der Server weiß, was für ein Dokument und was für Objekte er, wenn Sie im Browser die Adresse des Realms direkt adressieren, als Ansicht berechnen soll, wird diese RealmNode.xml Datei geladen, das WebPage-Element im Code erkannt und im Anschluss in der Verarbeitung dessen Daten ausgewertet.

properties-Element

Das <properties> Element ist der dient als Container für die Zuweisung von Werten zu Eigenschaften des WebPage-Objekts. Hierzu zählt mitunter zum Beispiel der Titel des Dokuments. Diesen findet man im Browser im Kopf des Browserfensters. Die description-Eigenschaft wiederum findet man im Google-Suchergebnis mit 1 bis 2 Zeilen zuweilen in einer Suchmaschine, wenn diese die Adresse der Seite als Teil des Suchergebnisses auflistet.

properties/title-Element

Das <title> Element definiert den Seitentitel einer WebPage. Diesen findet man im Browser im Kopf des Browserfensters. Die description-Eigenschaft wiederum findet man im Google-Suchergebnis mit 1 bis 2 Zeilen zuweilen in einer Suchmaschine, wenn diese die Adresse der Seite als Teil des Suchergebnisses auflistet.

properties/description-Element

Die description-Eigenschaft wiederum findet man im Google-Suchergebnis mit 1 bis 2 Zeilen zuweilen in einer Suchmaschine, wenn diese die Adresse der Seite als Teil des Suchergebnisses auflistet.

properties/isPartOf-Element

Den Wert des <isPartOf>..</isPartOf>, den Sie dort als Text eingeben, dient der Referenzierung eines übergeordneten Dokuments und des darin definierten Objekts wie in diesem Fall einer WebSite. Damit wird beschrieben, dass diese WebPage für den Fall, dass Informationen gesucht werden, diese im übergeordneten Dokument suchen soll.

Dieses betrifft im Regelfall für WebPage-Dokumente und Objekte, welche Einzelseiten einer Webseite entsprechen, mitunter das 'Webdesign' oder auch die Frage, welches Menü eigentlich mit Links auf welche Seiten oder welcher 'Footer' für den Seitenfuß geladen werden soll.

contents

Das <contents>..</contents> Element innerhalb eines WebPage-Elements dient als Container für alle sogenannten 'Content Elements' oder 'Content-Elemente', oftmals als 'CE' abgekürzt.

Anstelle der drei Punkte <contents>...</contents> werden bei einer WebPage dann mitunter die Elemente für Layouts, für eine Slideshow mit Bilderm im Seitenkopf oder auch eben die Texte und Bilder definiert.

contents/ce:ContentReference

Das <ce:ContentReference ../> Element wird dem Laien genauso neu vorkommen wie die anderen Elemente mit dieser Syntax auch. Wer mit XML aber bereits schon mal gearbeitet wird erkennt an dieser Stelle, schon mal eines: Ja, wir arbeiten mit XML-Namespaces.

Die Abkürzung ce: ist der XML-Namespace für alle 'Content-Elemente'.

Neuere Elemente haben bereits den ce:-Namespace. Ältere XML-Elemente haben diese noch nicht. Sie können davon ausgehen, dass alle Content Elemente ohne Namespace mittelfristig das ce:-Prefix bekommen werden.

XML-Namespaces stellen sicher, das Elemente wie <WebPage> einerseits als Content Elemente im Content Management zukünftig als <ce:WebPage> verwendet werden können. WebPage-Objekte wird es aber in einem anderen Zusammenhang geben der dann einen anderen Namensraum wie <xyz:WebPage> bekommen wird. Damit wird wie auch bei Nachnamen von Personen sichergestellt, dass man zwei Personen, nur weil die den gleichen Vornamen haben, nicht so schnell verwechseln kann.


Übliche Ordner- und Dateistruktur

Ein Realm dient sowohl in Bezug auf die Informations- und Datenstruktur als auch in der Ordner- und Dateistruktur als Container.

Beispiel

Das nachfolgende Beispiel beinhaltet eine übliche Empfehlung und damit quasi den von uns geschaffenen Standard. Es ist aber möglich, bei der Deklaration der Informations- und Datenstruktur vom diesem Verfahren abzuweichen indem man im Routing alternative Pfade deklariert.



+ Realm                    FOLDER
  + mein-realm-name.xyz    FOLDER
    + _nodes               FOLDER
    + _ContentInstances   FOLDER
    + RealmNode.xml
    + RealmNode_HTTP404.xml
    + RoutingDefinition.xml

                        

Erläuterung

Ordner mit RealmNode-Key

Jedes Realm benötigt einen eindeutigen Namen für die Adressierung. Wir haben uns bei der Bezeichnung an der Bezeichnung von Packages und Modulen in JAVA lassen: Dort ist es üblich, dass man im Zweifelsfall als eindeutigen Namen für eine Paket-Struktur immer den Domainnamen des Unternehmens verwendet, weil die Wahrscheinlichkeit, dass ein anderes Unternehmen die selbe Bezeichnung als eindeutigen Key für sein Realm verwendet, damit eher gering ist.

Die im Beispiel genannte Bezeichnung 'mein-realm-name.xyz' könnte also auch 'example.com' oder 'manuel-mustermann-hintertupfingen.de' lauten.

RealmNode.xml

Der RealmNode.xml File beinhaltet zumeist die Deklaration eines WebPage-Objekts. Im Grunde genommen handelt es sich bei dieser in dieser Datei deklarierten Struktur einer WebPage und deren Inhalten quasi um die Startseite Ihrer Webseite.

Diese Formulierung 'Startseite' oder auch 'WebSite' als Container für 'WebPage(s)' ist allerdings etwas unglücklich gewählt, denn mit diesem System kann man eben nicht nur digitale Dokumente zur Formulierung der Informations- und Datenstruktur von Webseiten im Sinne von 'Homepages' deklarieren sondern auch die Objekt-Struktur für das 3-dimensionale 3D-Modell eines Gebäudes.

Der RealmNode und das erste RealmNode.xml Dokument ist zuerst einmal das Dokument, was man im Browser adressiert, wenn man die Adresse des Realms eingibt.

RealmNode_HTTP404.xml

Die Bezeichnung HTTP404 entstammt aus dem HTTP-Protokoll mit welchem man mit einem Browser im Internet Seiten adressiert. Wenn man eine Adresse eingibt, für die der Server einer Webseite dort keine Antwort findet, liefert dieser den Fehler '404':FileNotFound.

Wenn Sie in Ihrem Realm ein WebPage-Dokument in einem solchen File deklariert haben, wird dieses Dokument in der Ansicht gerendert immer dann, wenn Ihr Realm Anfragen bekommt wo es die passenden Adressen nicht zuordnen kann.

_nodes Ordner

Der _nodes-Ordner dient als Speicherort für die Deklaration von mitunter WebSite-Dokumenten sowie auch anderen Dokumenten, welche Sie als Informations- oder Datenknoten aus anderen Dokumenten referenzieren möchten.

Ein einfaches Beispiel: Damit eine WebPage als Einzelseite weiß, zuwelcher WebSite diese gehört, damit mitunter geklärt werden kann, welches Menü eigentlich als Navigationsstruktur im Seitenkopf geladen werden soll, kann man in einem WebPage-Dokument eine Referenz und damit einen Verweis auf den Speicherort der übergeordneten WebSite definieren.

Damit Sie diese oft referenzieren Dokumente dann leicht finden können, wurden diese Ordner mit einem '_' Unterstrich im Namen begonnen. Das stellt sicher, dass bei einer Sortierung der Ordner dieser Ordner _nodes mit anderen _-Ordnern immer oben steht. Sie können den Ordner auch umbennen, wenn Sie möchten.

_ContentInstances

Auch der _ContentInstances Ordner ist ein Ordner, in welchem Dokumente liegen, die oftmals aus anderen Dokumenten referenziert werden sollen.

Bei Content-Instances handelt es sich in der Objektorientierung um Instanzen eines Typs bestimmter Komponenten oder mitunter auch schlichtweg Textbausteinen, die Sie als XML-Files in diesem Ordner ablegen und dann aus Ihren anderen Dokumenten beim Rendern von Ansichten einer WebPage einbinden oder quasi nachladen können.

Sie können es mit einer 'include' Anweisung in PHP oder Import-Anweisungen in anderen Skript- und Programmiersprachen vergleichen.


FAQ

Sind auch alternative RealmNode-Keys möglich?

Ja, im Kern geht es darum, einen eindeutigen Schlüssel oder 'unique string' zu definieren, damit jedes Realm, welches auf einem der Server weltweit angelegt wird, keine Namensgleichheit bei diesem Schlüssel hat.

Wer sich allerdings bewusst ist, dass das gesamte System aus gutem Grund auf XML-Dokumenten und Ordnerstrukturen basiert, weil genau dieses von Programmen und Menschen über Jahrzehnte verständliche Format damit auch in 20 Jahren noch gelesen und editiert werden kann, wird sich freuen, bei der Bezeichnung der RealmNode-Key auch in ein paar Monaten oder Jahren noch durchblicken zu können, wessen Realm das dort eigentlich ist.

Der Sinn und Zweck besteht hierbei darin, die verschiedenen Ebenen der Verschachtelung von Informationen wie beispielsweise den Kapiteln 3.1.2 und 3.1.3 innerhalb des übergeordneten Kapitels 3.1 kapseln zu können.

Dieses Prinzip ist nicht neu, aber neu ist bei diesem System, dass Sie es auch anders konfigurieren könnten.

Genauso, wie man in der Programmiersprache JAVA die jeweiligen Packages als Container für Klassen verwenden kann und damit die Ordnerstruktur mit deren Verschachtelung und den Namen der Ordnern der Package-Struktur entsprechen müssen, funktioniert es in diesem System sinngemäß auch.

Bei PHP Programmierung gibt es dieses Prinzip (PSR-4) ebenso.

WebPages bleiben WebPages

Einem WebPage-Dokument ist es vom Prinzip her völlig egal, ob es in der Informations- und Datenstruktur nun mit einem RealmNode, RootNode, SectionNode oder anderem Knoten in der Hierarchie verknüpft wird.

Ein WebPage Dokument beschreibt zuerst einmal ein Objekt welches man in einem Browser betrachten kann. Wie dann diese WebPage für einem RealmNode im Detail aussieht ist eine Frage von Layout- und anderen Komponenten, welche man im Content Management und beim Editing als Redakteur dann dort in der WebPage verbaut.