Metadatenausgabe bearbeiten
Parameter der Metadatenausgabe

Die Parameter der Metadatenausgabe sind an jeder Ebene im Reiter Metadatenausgabe zu finden. Dieser Reiter ist eine Extension, die zuvor registriert werden muss.

Darstellung

  • CSS-Stylesheet: Name eines CSS-Stylesheet für diese Element (oder der Inhalt)

Verhalten

  • Als Portalseite ausgeben: Legt fest, ob folgende Elemente als Portalseitenelement mit ausgegeben werden sollen
  • OGC WMS/WFS URL generieren: Legt fest, ob die WMS oder WFS Url in die TECHDATA des internen XML eingefügt werden soll. Welcher Dienst abgegeben wird, ist von den Rechten des Benutzers und den Ebenen abhängig.

Wirksame Filter:

  • das Thema muss im Themenbaum sichtbar sein
  • in "Metadatenausgaben" des Admin-Tree muss die Option "OGC WMS/WFS Url" aktiviert sein (direkt oder vererbt)
  • der Benutzer SYSTEM_ANONYMOUS_USER muss das Recht "Rendern von Geodaten" (WMS) oder "Zugriff auf Sachdaten" haben

Hinweise:

Wenn das Thema ein Admin-Tree ist und alle Ebenen sichtbar und im Zugriff für den jeweiligen Dienst-Typ sind, dann wird *ein* Link für die Node-Id des AdminTree erstellt.

Gibt es Abweichungen zwischen AdminTree und angezeigten Ebenen im View-Node, dann wird *pro Layer* ein Link generiert.

Anpassung der Metadatenausgabe

Um bestimmte Vorlagen in cardo anzupassen, existieren sogenannte Transformationsdateien im XSLT-Format. Die XSLT-Transformation ist eine Programmiersprache zur Transformation von XML-Dokumenten. In der folgenden Abbildung wird dies nochmal verdeutlicht. Das AusgangsXML wird anhand der XSLT Vorlage verändert. Das Ergebnisdokument enthält die angepasste Ansicht ihrer Metadaten.

xslt.png

Eine Transformation der Ansicht ist für folgende Ausgaben möglich:

Im cardo werden die entsprechenden Transformationsdateien in den jeweiligen Ordern im cardoCore gespeichert.

Unter folgendem Pfad finden Sie die Transformationsdateien:

cardoBasisVerzeichnis\coreWeb3\IIS\net3\Ikx\DefaultXML

Hinweis: Ändern Sie niemals die cardo-eigene Transformationsdatei. Diese Datei wird bei jedem cardo-Update überschrieben und Änderungen gehen damit ungefragt verloren. Generell gilt: alle kundenspezifischen Dateien liegen im Projektverzeichnis und werden beim cardo-Update nicht angefasst.
 

transformation_2.png

Wird eine Anpassung notwendig, so sind die Dateien zu kopieren und im Projektverzeichnis abzuspeichern und die gewünschten Änderungen vorzunehmen.

transformation_3.png

cardo liest intern immer zuerst ihr Projektverzeichnis aus und wird für die Ausgabe wenn vorhanden, ihre angepasste XSLT verwenden.

Hinweis: für ISO 19115/19119 existiert weiterhin ein template.xslt. Das ISO-Format ist streng vorgegeben und Kunden sollten eine Transformation nicht selbst vornehmen. Ist trotzdem eine Anpassung notwendig, so müssen die Veränderungen im template.xslt vorgenommen werden. Über die kundenspezifische Transformation wird nur die Zuordnung Ausgangsdaten zu Zielfeldern definiert.

Dagegen erlauben HTML und Infothek eine freie Gestaltung ihrer Ansichten. Wir bieten Ihnen eine IDU-Vorlage an, in welcher Templates bereitgestellt werden, die Sie direkt einbinden können.

In der folgenden Abbildung sehen Sie den Ablauf für die Infothek. Nach der Auswertung der Rechte (aus der Sicht des System_Anonymous_User) erfolgt eine Transformation des internen XML über die XSLT Datei. Wurde die XSLT Datei ihres Projektes verändert, erscheint eine angepasste Infothek. Klicken Sie auf folgenden Link, so sehen Sie eine angepasste Infothek unseres Kunden LBEG.

infothek.png

Anpassung XML
  •  Nutzung einer Vorlage - template.xslt

template.png

 <xsl:template name="Generate_identificationInfo_custom">
    <xsl:call-template name="Generate_identificationInfo_base">
      <xsl:with-param name="isoType" select="" />
      <xsl:with-param name="abstractselect="'/Root/Description'" />
      <xsl:with-param name="pointOfContact" select="" />
      <xsl:with-param name="graphicOverview_fileName" select="" />
      <xsl:with-param name="graphicOverview_fileDescription" select="" />
      <xsl:with-param name="graphicOverview_fileType" select="" />
      <xsl:with-param name="topicCategoryCode" select=""/>
    </xsl:call-template>
  </xsl:template>

Anpassung HTML-Ansicht
  • Integration von IDU-Templates
  • freie Gestaltung möglich
  • Infothek/Metadaten in cardo.Map

template_html.png

Damit eine externe Funktion von cardo aufgerufen werden kann, muss das externe Modul ganz oben im Xslt-Dokument bekannt gemacht werden, indem unter xsl:stylesheet ein entsprechender neuer Namespace definiert wird.

Folgende Funktionen sind vorhanden und können eingefügt werden:

cardo - allgemeine Funktionen:

Definition des dazugehörigen Moduls als Namespace:

<xsl:stylesheet version="1.0"
    ...
    xmlns:cardo="eo:cardo">

Folgende Funktionen stehen zur Verfügung:

bool UserIsInRole(String roleName): gibt true zurück, wenn der Benutzer Mitglied in der übergebenen Gruppe ist

bool UserHasAdminRightFor(enum): gibt true zurück, wenn der Benutzer das übergebene cardo Recht hat (mögliche Werte: ETree, SU, AppMgr, ExtDsn, ThemeWriter, MapOra, IduMeta, Usd_UserRights, ALMap, FieldProps, KKAdmin, KKUsers, SymbolEdit, Create_Label, Usd_UploadRights)

Beispiel:

<xsl:if select="cardo:UserIsInRole('ADMIN_GRUPPE')">
   ....
</xsl:if>

Beispiel: Techdata ausblenden

Als letzter Abschnitt der generischen HTML-Darstellung wird ein Block mit technischen Daten eingeblendet. Es gab die Anforderung, diesen auszublenden, da er die Anwender u.U. verwirrt.

Um dies zu erreichen, kann das Template überschrieben werden. Hintergründe zum kundenspezifischen Überschreiben von Templates finden Sie hier.

Für dieses Beispiel ist es sinnvoll, nicht die ganze XSLT-Datei neu zu schreiben sondern in der angepassten XSLT-Datei das originale Template aufzurufen und nur gezielt zwei Template-Methoden 'hasSpecialNodeRendering' und 'doSpecialNodeRendering' zu überschreiben.

Um den Block Techdata auszublenden müsste die angepasste XSLT-Datei folgendermaßen liegen unter
_Projekt_.../ikxXml/2HtmlXslt/CARDO_DEF_MDDATASET.xslt
und folgendermaßen aussehen:

 

<?xml version="1.0" encoding="utf-8"?>

<!-- ÜBERSCHRIEBENES XSLT für das Standard-Metadatenmodell von cardo -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:cardoExtension="eo:helper">

<!-- Originale Transformation für Standardansicht importieren (damit einzelne Templates überschrieben werden können) -->
<xsl:import href="..\..\..\coreWeb3\IIS\net3\Ikx\DefaultXml\2HtmlXslt\CARDO_DEF_MDDATASET.xslt"/>

<xsl:output method="html" version="4.0" encoding="utf-8" indent="yes"/>

<!-- Spezialbehandlung für einen Knoten - Template überschreiben
    (unten muss zwingend dann auch die Spezialbehandlung in doSpecialNodeRendering implementieren werden)-->

<xsl:template name ="hasSpecialNodeRendering">
    <!--Knoten TECHDATA soll ausgeblendet werden, deswegen hier für diesen Spezialbehandlung registrieren-->
    <xsl:if test="local-name() = 'TECHDATA'">
        <xsl:value-of select="true()"/>
    </xsl:if>
</xsl:template>

<!-- Spezialrendering für einen Knoten - Template überschreiben-->
<xsl:template name ="doSpecialNodeRendering">
    <xsl:choose>
        <xsl:when test="local-name() = 'TECHDATA'">
            <!-- nichts tun, das Element soll nicht angezeigt werden -->
        </xsl:when>
    </xsl:choose>
</xsl:template>
</xsl:stylesheet>