uio--WebPageHeader-Module
uio--WebPageMain-Module

Overview

Wenn man einem Einsteiger in UDS den Begriff Begriff WebPage, deren Syntax und den Sinn und Zweck nahebringen möchte, beginnt mit manchen Kandidaten die Diskussion zuerst einmal bei der Schreibweise: Warum soll ich denn WebPage statt Webpage schreiben?

Nachdem Sie dann die CamelCase-Schreibweise der Komponente überstanden haben werden Sie sich noch mit dem Namespace in der XML Notation anfreunden müssen: Sie müssen tatsächlich <ce:WebPage> schreiben.

Übrigens: Die Formulierung von Daten und Strukturen in Programmiersprachen (und damit auch in UDS XML Syntax) ist case-sensitive, dh. Sie schreibeweise muss auch exakt <ce:WebPage> lauten. Regelkonform denkende und arbeitende Menschen sind hier klar im Vorteil.


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.

WebPage XML Structure

WebPage Elemente entsprechend Einzelseiten einer Webseite

Die UDS XML Struktur von <ce:WebPage> Elementen entspricht dem Standard-Aufbau der Daten von Komponenten in UDS: Der Name des Elements wird in Camel-Case-Schreibweise geschrieben und bekommt vor dem Namen mit ce: den XML Namespaces für Content Element(s) zugewiesen. Konfigurationen schreiben Sie in der <ce:config>, und danach kann es in <ce:contents> mit der Redaktion schon losgehen.

Eine neue Seite einer Webseite lässt sich am leichesten mit UDS XML Code anlegen, indem Sie sich den Quellcode einer Muster-Seite von Ihrem Entwickler und/oder Designer geben lassen.

Wir bezeichnen einen solchen UDS-XML Code als UDS Blueprint, also eine Blaupause.

Struktur einer WebPage



<?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"
>
  <ce:WebPage>
    <ce:config>
     <!-- Configuration -->
    </ce:config>
    <ce:contents>
     <!-- Contents -->
    </ce:contents>
  </ce:WebPage>
</doc>

                        

Erläuterung

doc

Das <doc> dient nur als Container für andere Elemente, darunter in diesem Fall einem <ce:WebPage> Element.

Die zugehörigen Namespaces basierend hier auf einem SNEWMEDIA Standard. Sie haben vom Prinzip die Option, eigene CEs zu definieren.

ce:WebPage

Ein <ce:WebPage> gliedert sich primär in zwei Bereiche: <ce:config> Definitionen sowie dem <ce:contents> Element als Container für die eigentlichen Inhalte einer Webseite.

Konfiguration

<ce:config> Element

Das <ce:config> Element beinhaltet die Konfiguration von Properties und damit von Eigenschaften einer <ce:WebPage> Instanz.

Auf übliche Eigenschaften der Konfiguration wird gesondert eingegangen.

<ce:contents> Element

Das <ce:contents> Element ist der Container für alle Inhalte dieser WebPage, darunter mitunter den WebPageHeader, WebPageMain und WebPageFooter.

Auf die Details wird gesondert eingegangen.

URIs und Distributed Documents

Domains mit URIs und das Routing zu Dokumenten und Services

Damit eine WebPage anschließend auch über einen URI und damit eine Adresse für Ihre Webseite adressiert und angezeigt werden kann, müssen Sie eine zugehörige URI-Adresse in der RoutingDefinition erstellen, um dort diese Webadresse mit Ihrer XML Datei zu verknüpfen.

https://example.com/testinstallation/de/service/tea besteht als URL aus https://example.com als Aufruf der Domain mit SSL Verschlüsselung und einem URI welcher aus zwei Teilen besteht: Einem Context wie /testinstallation für den Fall, dass Sie den UDS Core Server mehrfach für die Domnain installieren, und dem eigentlichen de/service/tea URI.

Damit der UDS Core Server weiß, wo er das zugehörige Dokument für die WebPage mit der relativen Adresse de/service/tea finden kann, muss dem Server dieses über eine XML formulierte RoutingDefinition mitgeteilt werden.

Hinweis: Zum Zeitpunkt der Redaktion dieser Doku gibt es zwei Verfahren für die Definition von Einträgen im Routing. Das Verfahren wird allerdings bereits um eine parallele dritte Variante ergänzt, um nicht Dokumente über URIS zu adressieren sondern tatsächlich REST-konforme Endpunkte für Webservices zu schaffen, welche basierend auf dem HTTP Request für den URI für eine Seite dann das Dokument beschaffenb und rendern lassen.


Entwickler und Administratoren kennen dieses Prinzip: Man kennt es vom sogenannten Mounten von Ressourcen wie Festplatten auf entfernten Rechnern, damit Sie diese Ressourcen genauso adressieren und verwenden können wie Dateien auf Ihrem lokalen Rechner auch.

Der Sinn und Zweck besteht hierbei darin, dass die in UDS v.1.5.x adressierten XML Documents für Ihre WebPage-Definitionen im Regelfall noch im Realm auf dem selben Server lagen, wo der UDS Core mit dem HTTP Server installiert wurde.

Ab UDS 1.6.x.x können die zugehörigen Dokumente aber auch über URL Connections über HTTP Requeste von anderen Rechnern geladen werden.

Das bedeutet sinngemäß, dass Sie bislang die Zuordnung zwischen URI und einem XML File in der RoutingDefinition schlichtweg relativ in Bezug auf Ihren Realm-Ordner formulieren.

/Realm/{IhreKennung}/service/tea/Branch.xml


Auf die Besonderheiten in Bezug auf die Namensgebung von XML-Files für WebPages gehen wir gesondert ein.

RoutingTable Mindestwissen

Zum Zeitpunkt der Planung es UDS Uniform Design System(s) hatten wir ein Primärziel vor Augen: Wir wollten schlichtweg die Datenstruktur und Seitenstruktur von Webseiten für die Redaktion von Seminarunterlagen formulieren und hierfür einen Renderer programmieren, der uns diese leidigen Updates für Open-Source-CMS immer dann erspannt, wenn man für den Mist keine Zeit hat.

Die Besonderheit in der Konzeption von Datenstrukturen begann dahingehend damit, dass wir den URIs eine klare Struktur geben wollten, um damit bestimmte Knoten in der Informationsstruktur möglichst leicht an URIs erkennen und aber auch nach einem klaren Schema in der Bezeichnung von Files und der Struktur der RoutingDefintion verwenden zu können.

ContextNode und RealmNode

ContextNode: Der ContextNode sollte sich hierbei auf die die Adressierung eines Webservices beziehen, also damit dem Programm auf dem Webserver, welches den URI als HTTP Request bei einem Aufruf einer Seite mitgeteilt bekommt.

Im Zuge der Programmierung, weil es mal wieder schneller gehen sollte, haben wir allerdings ab Version v.1.5.2.x den Sprach-Parameter wie /de oder /en oder auch /cn für Chinesisch mit eben diesem ContextNode abgebildet.

Der ContextNode ist seit v.1.5.2 immer das erste Segment einer Adresse und damit entweder die Sprachversion wie /de, /en, /cn oder aber ein Key für eine Landing-Page.

Der RealmNode ist in der Informationsstruktur damit das erste WebPage-Dokument dessen URI-Segment-Key sich an Position zwei befindet, dh. /de/services hat /de als ContentNode-URI-Segment und /services als RealmNode-URI-Segment.

In der RoutingDefinition in UDS v.1.5.2.x geben brauchen Sie aber den ContextNode-URI nur 1x angeben.

Damit aber der Server weiß, was eigentlich bei / oder /de zu adressieren, obwohl sonst noch kein Dokument als WebPage adressiert wurde, muss dem Server mitgeteilt werden, aus welchem Realm er die Startseite laden soll. Diese wird als ce:WebPage XML Struktur in einem RealmNode.xml File formuliert. Wenn das Realm also z. B. example heißen würde befindet sich der Code für die Startseite im Regelfall in /Realms/example/RealmNode.xml. Für die Sprachversion selbst gibt es keine Webseite. Das hat damit zu tun, dass die RealmNode Seite nur adressiert wird, wenn der Nutzer keinen URI Parameter hat, so dass die Startseite als RealmNode zumeist die Sprachauswahl als Startseite liefert.

Man definiert in der RoutingDefinition also zuerst den ContextNode, damit der erste URI-Parameter wie /de, /en, /cn oder aber auch /wunschkonzert ohne einen Sprachenschalter erfasst werden kann.

Im Anschluss definiert man den zugehörigen RealmNode. Dieser dient primär dazu, den obersten Ordner Ihrer Dokumentstruktur für alle Seiten anzugeben.

RootNode

Ein RootNode ist in der Informationstruktur gewohnt das ce:WebPage Dokument in einem RootNode.xml File.

Ein RootNode ist der Wurzelknoten für einen kompletten Themenbereich oder auch ein Standort oder eine Abteilung+ eines Unternehmens. Eine Adresse wie /de/services führt also in der einfachsten Fassung zu folgender Position der Datei:

/Realms/example/services/RootNode.xml

ce:config

Inhalte der Konfiguration



    <ce:config>
      <ce:name>ce:WebPage</ce:name>
      <ce:title>ce:WebPage</ce:title>
      <ce:description>ce:WebPage</ce:description>
      <ce:isPartOf>
        <ce:WebSite
         ref="/Realm/uio3.com/_nodes/WebSite__@uio3__UDS_V24A.xml">
        </ce:WebSite>
      </ce:isPartOf>
      <ce:language_key>de</ce:language_key>
      <ce:author>T2M</ce:author>
    </ce:config>

                        

Erläuterung

ce:config

Das <ce:config> Element dient als Container für die Definition von werden für eine Reihe von Eigenschaften, über die jede Webseite als Einzelseite einer Website verfügen sollte.

Wichtige Eigenschaften

Eine sehr wichtige Konfiguration ist der <ce:isPartOf> Wert. Dieser gibt die semantische Verknüpfung zwischen einer ce:WebPage Instanz und einer zugehörigen ce:WebSite Instanz als Gruppierungselement an.

Status: alpha

Geplante Änderungen

Die Verwendung von ce:config und ce:contents ist für die meisten Content Elements, kurz CE, ein Standard seit UDS v.1.5.2.x und wurde auch rückwirkend für ce:WebPage Elemente geschaffen.

Für die Berücksichtigung einer Vielzahl weiterer Properties aus dem Schema wird auch das ce:WebPage Element um ein ce:properties Element erweitert werden, um eine typisierte Erfassung weiterer Informationen für eine semantische Verknüpfung ermöglichen zu können.

title

ce:title: Der Titel entspricht dem HTML TITLE Element. Dieser wird später in einem Browserfenster oben im Reiter im Browser angezeigt.

Diese Property gibt es auch in schema.org für CreativeWorks Instanzen.

Status: alpha

Der ce:title wird bislang ohne Typisierung und ohne Auswertung der Sprache erfasst.

Mit Einführung von ce:properties wird der Titel einer WebPage demnach als text-Element typisiert werden.

ce:name

ce:name: Dieses Element dient für eine Kurzbezeichnung dieser WebPage Instanz. Es handelt sich zumeist um einen verkürzten Titel.

Diese Property wurde geschaffen für LinkedData in Anlehnung an SchemaOrg.

Status: alpha

ce:description

ValueType: xs:string

ce:description: Die ce:description entspricht dem HTML META Tag für die description, welche in Google verwendet wird.

Die Eingabe des Wertes entspricht einem normalen String bzw. XML TextNode.

Auch in schema.org gibt es eine entsprechende Property im Falle von Thing Instanzen.

Status: alpha

Die ce:description Eigenschaft ist sehr wichtig weil diese im Suchergebnis in Suchmaschinen wie bei Google die Kurzbeschreibung von ca. 90-120 Zeichen beinhaltet.

Diese Description ist allerdings eigentlich auch eine Property im Schema für Thing-Objekte und müsste dahingehend mit Einführung von ce:properties auch als text-Wert typisiert werden.

ce:keywords

ValueType: xs:string

ce:keywords: Die ce:keywords Definition entspricht dem HTML META Tag für die keywords, welche in Google verwendet werden.

Die Eingabe des Wertes entspricht einem normalen String bzw. XML TextNode.

Auch in schema.org gibt es eine entsprechende Property im Falle von CreativeWorks Instanzen.

Status: alpha

Für die Keywords wurde inzwischen ein KeywordsPermutationModule programmiert, um nicht ständig alle Stichworte von Hand schreiben zu müssen.

ce:isPartOf

ValueType: ce:WebSite.ref

ce:isPartOf: Eine WebPage-Instanz ist immer Teil einer WebSite-Instanz. Das hat damit zu tun, dass Einstellungen für Theme- und Style sowie das Menü im Seitenkopf, der Footer oder auch das Logo über die WebSite als Gruppierungsinstanz definiert wird.

Diese Eigenschaft ist SchemaOrg entlehnt worden und dient für die Definition eines semantischen Zusammenhangs zwischen WebPage und WebSite.

Status: alpha

Ein Wert für diese Eigenschaft ist wichtig.

ce:contents

ce:WebPageHeader

Das <ce:WebPageHeader> Element ist optional. Wenn es verwendet wird so wird hier zumeist eine Slideshow im Seitenkopf definiert.



<ce:WebPage>
 <ce:contents>

  <ce:WebPageHeader>
   <ce:config></ce:config>
   <ce:contents>
    <!-- Hier Slideshow -->
   </ce:contents>
  </ce:WebPageHeader>
  
  <ce:WebPageMain>
   <ce:config></ce:config>
    <ce:contents>

     <HTMLBODY_HEADLINE_010_Section_Breadcrumb_Title>
      <Headline><text lang="de">ce:WebPage</text></Headline>
      <Paragraph>
       <text lang="de">ce:WebPage</text>
      </Paragraph>
      <Navigation>
       <Continue>
        <Link>
         <text lang="de">de/uio3-docs/uds/components/WebPage#contentBegin</text>
        </Link>
       </Continue>
       <AncestorUp>
        <Link>
         <text lang="de">de/uio3-docs/uds/components</text>
        </Link>
       </AncestorUp>
       <Previous>
        <Link>
         <text lang="de">de/@snm/docs/cs/cs-overview</text>
        </Link>
       </Previous>
       <Next>
        <Link>
         <text lang="de">de/@snm/docs/cs/cs-basics/cs-programmstruktur</text>
       </Link>
      </Next>
     </Navigation>
    </HTMLBODY_HEADLINE_010_Section_Breadcrumb_Title>

    <ce:JumpLanding id="contentBegin"></ce:JumpLanding>

    <HTMLBODY_MAIN_CONTENT_010_Section_Overview>  
    <!-- .... -->
    </HTMLBODY_MAIN_CONTENT_010_Section_Overview>  

    <ce:ContentReference 
      uri="/Realm/example.com/_ContentInstances/cblock-CallToActionFinally-@***-create.xml"/>
    
   </ce:contents>
  </ce:WebPageMain>

  <ce:WebPageFooter>
  </ce:WebPageFooter>
 </ce:contents>
</ce:Webpage>      

                        

ce:WebPageHeader

Das ce:WebPageHeader Element ist ein Container für alle CEs welche der visuellen Gestaltung des Seitenkopfs dienen. Hierbei kann es sich beispielsweise um eine Slideshow handelt.

ce:WebPageMain

ce:WebPageMain Element beinhaltet die eigentlichen Inhalte einer ce:WebPage Instanz. Dieses entspricht sinngemäß dem <main> Element in HTML.

In diesem Element werden WebPageMainElement artige Elemente definiert welche wiederum der Container für <ce:Section> Elemente sind welche schlussendlich das eigentliche Layout mit <CEContainer> und dergleichen beinhalten können.

ce:WebPageFooter

Das ce:WebPageFooter Element beinhaltet den eigentlichen Seitenfuß einer ce:WebPage Instanz.

ce:isPartOf