Infothek

Metadaten können über die in cardo vorhandene Infothek den externen Nutzern als Internetportal zur Verfügung gestellt werden. Die Veröffentlichung der Metadaten erfolgt aus Sicht des System_Anonymous_Users. Besitzt dieser für eine Entität oder Klasse das Leserecht, so werden nur diese Metadaten freigegeben. Die vorhandene IDU Standardinfothek können Sie selbstverständlich über ein Skript Ihren Wünschen anpassen.

Durch die Ausgabe als html-basiertes Portal, wird die Indizierung durch Suchmaschinen erleichtert. Die Infothek bietet sich so als weitere Informationsplattform neben einem CSW-Dienst an, welche die Daten für die Recherche über gängige Suchmaschinen verfügbar macht. Ein gelungenes Beispiel der Infothek finden Sie auf den Seiten des LBEG (NIBIS Infothek).

Die Infothek starten Sie im cardo-Startcenter:

start_infothek.png

 

Anpassung Datenausgabe

Eine allgemeine Beschreibung zur Lage der XSLT-Dateien und zur Anpassung finden Sie unter der Überschrift Metadatenausgabe.

Die Metadaten einer Ebene werden aus cardo in einem internen XML-Format abgerufen. Dieses wird dann über eine Transformation (XSLT) in eine HTML-Seite transformiert. Grundlage einer solchen Transformation ist eine Transformationsdatei (.xslt), welche wiederum in XML verfasste Anweisungen zur Erzeugung des Ergebnisdokumentes aus den Daten des Quelldokumentes enthält.

Standard oder Benutzerdefinierte Transformationsvorlage

cardo sucht vor der Transformation nach einer Transformationsvorlage in folgender Reihenfolge:

  • kundenspezifische Transformationsdatei im Projektverzeichnis
  • cardo-Standardtransformationsdatei

Sie können den Inhalt der Infothekinhaltsseiten beeinflussen, indem Sie eine eigene Transformationsdatei erstellen und im Projektverzeichnis ablegen. cardo wird dann die kundenspezifische Datei bevorzugt verwenden.

Das allgemeine Infothek-Layout können Sie dagegen mit einigen Systemparametern anpassen.

Diese Transformationsdatei muss unter folgendem Pfad abgelegt werden:

_Projekt_<Kunde>/ikxXml/2CmsHtmlXslt/<interner Klassenname>.xslt

Hinweis: Wenn Sie bisher noch keine kundenspezifischen Transformationsdateien verwendet haben, existiert der Pfad noch nicht. Legen Sie dann bitte die entsprechenden Unterverzeichnisse an. 

Der interne Klassenname ergibt sich aus dem Metadatenmodell, welches Sie intern verwenden. Verwenden Sie das cardo-Standardmodell, dann lautet der Klassenname CARDO_DEF_MDDATASET. Verwenden Sie ein eigenes Metadatenmodell, können Sie den Klassennamen über den Metadaten-Klasseneditor ermitteln. Konkret wird die interne ID (ClassId) der Metadaten-Hauptklasse benötigt. Ein vollständiger Pfad könnte z. B. so aussehen:

_Projekt_Developer/ikxXml/2CmsHtmlXslt/CARDO_DEF_MDDATASET.xslt

Als Vorlage für eine angepasste Transformationsdatei könnte die originale Transformationsdatei aus cardo dienen. Diese finden Sie unter:

coreWeb3\IIS\net3\Ikx\DefaultXML\2CmsHtmlXslt\<interner Klassenname>.xslt

Kopieren Sie diese in obiges kundenspezifisches Projektverzeichnis und nehmen Sie in der Kopie alle benötigten Anpassungen vor. Diese kundenspezifische Transformationsdatei wird automatisch bevorzugt verwendet.

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.

Relative Pfade

Damit die Transformationsdatei korrekt ist, müssen enthaltene relative Pfade noch angepasst werden. Die Transformationsdatei bindet z. B. eine weitere Transformationsdatei ein, deren Pfad nach dem umkopieren der Datei nicht mehr gültig ist und korrigiert werden muss. Ändern Sie folgende Zeile:

von

 <xsl:include href="..\2HtmlXslt\Includes.xslt"/>

in 

 <xsl:include href="..\..\..\coreWeb3\IIS\net3\ikx\DefaultXml\2HtmlXslt\Includes.xslt"/>
 

Schauen Sie bitte auch, ob der Pfad noch an anderen Stellen in der Datei verwendet wird und korrigieren Sie diesen gegebenenfalls.

Wenn Sie nun die Infothek aufrufen, können Sie die Änderungen an Ihrer kundenspezifischen Transformationsdatei sofort in den erzeugten Webseiten kontrollieren.

Hinweis: Da nun die kundenspezifische Kopie der Transformationsdatei verwendet wird, sind keine Änderungen an der cardo-eigenen Transformationsdatei bei Ihnen mehr wirksam, welche bei einem cardo-Update eingespielt werden. Änderungen müssten bei Bedarf von Hand in die kundenspezifische Datei übernommen werden. 

Allgemeiner Hinweis zur Struktur der Themen

Die Reihenfolge der Themen in der Infothek richtet sich nach dem Alphabet. Sind allerdings auch Metadaten an Ordnern und untergeordneten Ebenen vergeben, wird diese Struktur in der Infothek wieder aufgegriffen. Wollen Sie also, dass die Ordnerstruktur aus dem cardo in die Infothek übernommen wird, müssen sie mindestens einen Metadaten-Parameter an den Ordnern angeben.

Grundlagen XSLT

Die Transformation eines XML-Dokumentes in ein anderes Ausgabeformat über eine Transformationsdatei (XSLT) ist standardisiert. Im Internet oder Buchhandel finden Sie vielfältige Hilfen und Informationen darüber.

Für die Anpassung der Transformationsdatei sind Grundkenntnisse in XSLT nötig und es wird vorausgesetzt, dass Sie sich entsprechend informiert haben.

Hinweis: Der Standard XSLT wird weiterentwickelt, in cardo wird die Version XSLT 1.0 verwendet. Beachten Sie, dass entsprechend in der Transformationsdatei auch nur die Möglichkeiten dieser Version unterstützt werden.

Ausgangsdokument für die Transformation ist immer das XML-Metadaten-Dokument im IDU-Format. Dieses können Sie sich anschauen, indem Sie z. B. in cardo die Metadatenanzeige zu einer Ebene öffnen und dort das Format 'Internes XML' auswählen.

Beispiel: Textfeld ausgeben

Haben Sie z. B. in der Metadatenstruktur ein neues Textfeld angelegt und wollen dieses nun in der Infothek mit ausgeben, dann können Sie folgendermaßen vorgehen.

Fügen Sie an geeigneter Stelle in der Transformationsdatei einen neuen Abschnitt ein, der so aussehen könnte:

  <xsl:if test="//Root/LINKTEST">
   <h2>Verweis zu weiterführenden Informationen</h2>
   <xsl:value-of select="//Root/LINKTEST"/>
  </xsl:if>
 

Zuerst wird mit xsl:if geprüft, ob das im test-Parameter über den Pfad angegebene Element im Ursprungsdokument einen Wert hat. Ist dies der Fall werden die Anweisungen im xsl:if-Block ausgeführt. Als Pfad wird ein XPath-Ausdruck zu einem Element des Ursprungsdokument erwartet. Im obigen Beispiel wurde mit dem Klasseneditor direkt unter der Metadaten-Hauptklasse eine Entität 'LINKTEST' angelegt.

Der Anweisungsblock enthält zwei Zeilen. Die erste Zeile <h2> ... </h2> wird als reine Textausgabe interpretiert und ausgegeben und führt dann in der Ziel-HTML-Datei zur Anzeige einer Überschrift.

Mit der zweiten Zeile wird der Wert des Elementes ausgegeben, welches über den Parameter select mit XPath-Ausdruck angegeben wurde.

Das Ergebnis könnte dann so aussehen:

infothek_ausgabe_textfeld.png

Beispiel: Schlagwörter ausgeben

Wenn Sie in ihren Metadaten Schlagwörter definieren, können Sie diese ebenfalls in der Infothek mitauflisten.

Fügen Sie an geeigneter Stelle in der Transformationsdatei einen neuen Abschnitt ein, der so aussehen könnte:

1 <xsl:if test="//Root/KEYWORDS">
2     <h2>Schlagworte</h2>
3         <xsl:for-each select="//Root/KEYWORDS">
4             <xsl:if test="position()>1">, </xsl:if>
5             <xsl:value-of select="."/>
6         </xsl:for-each>
7 </xsl:if>

Zeile 1: Es wird getestet, ob der angegebene Knoten Daten enthält, wenn ja werden die untergeordneten Elemente ausgeführt.

Zeile 2: Es wird eine Überschrift vom Typ h2 und dem Titel "Schlagworte" erstellt.

Zeile 3: Für jedes Elemente, welches unter dem angegebenen Knoten zu finden ist, werden jene Zeilen ausgeführt, welche von den Tags <xsl:for-each></xsl:for-each> umschlossen werden.

Zeile 4: Zwischen den Tags befindet sich das Trennzeichen der Elemente, in diesem Fall ein Komma. Da dieses Zeichen erst nach dem ersten Wert benötigt wird, prüft dieser Test, ob die Position größer als 1 ist.
Neben Schriftzeichen können auch HTML-Codes als Trennzeichen verwendet werden.

Zeile 5: Mittels der Angabe value-of select="." wird der Inhalt des aktuellen Knotens ausgegeben.

Zeile 6 und 7 sind schließende Tags.

Ebenen in der Infothek

notwendige Einstellungen und Rechte für die Sichtbarkeit einer Ebene in der Infothek

  • für die Anzeige in der Infothek benötigt der SYSTEM_ANONYMOUS_USER das Recht Metadaten anzeigen für die jeweilige Ebene

Zusätzliche Einstellungen, wenn die Ebene als Dienst publiziert werden soll

  • zum Abrufen der Dienste werden die Rechte Rendern von Geodaten, Anzeige von Sachdaten und Daten exportieren für den SYSTEM_ANONYMOUS_USER benötigt.
  • weiterhin muss im Feld OGC WMS/WFS Url generieren ein JA notiert werden (Reiter Metadatenausgaben)

Bsp:

Ebene in Infothek anzeigen, als WMS Dienst aber nicht veröffentlichen (wenn Ebene in einem Dienst integriert ist)

  • für diese Ebene benötigt der SYSTEM_ANONYMOUS_USER das Recht Metadaten anzeigen (KEINE weiteren Rechte)
  • Ebeneneigenschaft: OGC WMS/WFS Url generieren -> Nein oder leer