Die Parameter der Metadatenausgabe sind an jeder Ebene im Reiter Metadatenausgabe zu finden. Dieser Reiter ist eine Extension, die zuvor registriert werden muss.
Darstellung
Verhalten
Wirksame Filter:
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.
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.
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
Wird eine Anpassung notwendig, so sind die Dateien zu kopieren und im Projektverzeichnis abzuspeichern und die gewünschten Änderungen vorzunehmen.
cardo liest intern immer zuerst ihr Projektverzeichnis aus und wird für die Ausgabe wenn vorhanden, ihre angepasste XSLT verwenden.
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.
<xsl:template name="Generate_identificationInfo_custom">
<xsl:call-template name="Generate_identificationInfo_base">
<xsl:with-param name="isoType" select="" />
<xsl:with-param name="abstract" select="'/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>
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:
<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>
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>