XIP und XSLT mit Repository Abfragen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Hying (Diskussion | Beiträge) |
|||
(6 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Im Folgenden wird beschrieben, wie innerhalb der XSL-Transformation Abfragen auf das IES-Repository erstellt werden können. Dazu ist die Ergänzung eines Namespaces nötig, mit der die Java Klasse angegeben wird, die die möglichen Funktionen zur Verfügung stellt (com.sitepark.ies.xip.importer.xslt.Repository). | Im Folgenden wird beschrieben, wie innerhalb der XSL-Transformation Abfragen auf das IES-Repository erstellt werden können. Dazu ist die Ergänzung eines Namespaces nötig, mit der die Java Klasse angegeben wird, die die möglichen Funktionen zur Verfügung stellt (com.sitepark.ies.xip.importer.xslt.Repository). | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Repository== | ==Repository== | ||
Zeile 41: | Zeile 16: | ||
| | | | ||
|- | |- | ||
− | |getId(anchor, format = null) | + | |getId(anchor [, format = null]) |
|Liefert die ID zu dem angegebenen Anker<br /> | |Liefert die ID zu dem angegebenen Anker<br /> | ||
format = null|leer<br /> | format = null|leer<br /> | ||
Zeile 57: | Zeile 32: | ||
| | | | ||
|- | |- | ||
− | |getParentId(anchor, format = null) | + | |getParentId(anchor [, format = null]) |
|Liefert die ID des Parent-Objektes | |Liefert die ID des Parent-Objektes | ||
|ID (entsprechend des Formats s.o.) | |ID (entsprechend des Formats s.o.) | ||
|2.14.5 | |2.14.5 | ||
|- | |- | ||
− | |getParentPathIDs(anchor, format = null, parentLinkIterateName = null, parentLinkFieldName = null) | + | |getParentPathIDs(anchor [, format = null [, parentLinkIterateName = null [, parentLinkFieldName = null]]] ) |
|Liefert eine kommaseparierte List von Parent-Pool-ID's zum angegebenen Anker.<br> | |Liefert eine kommaseparierte List von Parent-Pool-ID's zum angegebenen Anker.<br> | ||
Für die Parent-Strukturen aus Navigation oder Kategorie Verknüpfungen können die Feldnamen <code>parentLinkIterateName</code> und <code>parentLinkFieldName</code> der Verknüpfung angegeben werden | Für die Parent-Strukturen aus Navigation oder Kategorie Verknüpfungen können die Feldnamen <code>parentLinkIterateName</code> und <code>parentLinkFieldName</code> der Verknüpfung angegeben werden | ||
|zB: 'sp_parent_category_iterate'<br /> | |zB: 'sp_parent_category_iterate'<br /> | ||
zB: 'sp_parent_category.link' | zB: 'sp_parent_category.link' | ||
+ | |2.14.5 | ||
+ | |- | ||
+ | |search(query [, idFormat=null]]) | ||
+ | |Liefert die Anker der Objekte aus dem Suchergebnis. HINWEIS: Besitzt ein Artikel keinen Anker, wird dieser ignoriert. | ||
+ | |String, kommaseparierte Liste von Ankern. | ||
+ | |2.14.5 | ||
+ | |- | ||
+ | |searchIds(query [, idFormat=null]) | ||
+ | |Liefert die Id's der Objekte aus dem Suchergebnis. | ||
+ | |String, kommaseparierte Liste von Id's in dem angegebenen Format(s.o.). | ||
|2.14.5 | |2.14.5 | ||
|} | |} | ||
+ | |||
+ | ==Beispiel-XSLT== | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <xsl:stylesheet | ||
+ | version="1.0" | ||
+ | xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | ||
+ | xmlns:repository="com.sitepark.ies.xip.importer.xslt.Repository"> | ||
+ | |||
+ | <xsl:output method="xml" encoding="UTF-8" indent="yes"/> | ||
+ | <xsl:template match="/"> | ||
+ | |||
+ | <!-- Prüfe auf Existenz--> | ||
+ | <xsl:if test="repository:exists('myArticle.anchor')"> | ||
+ | <!-- ... Dinge, die bei existierendem Objekt erfolgen müssen --> | ||
+ | </xsl:if> | ||
+ | |||
+ | <!-- Den Parent ermitteln--> | ||
+ | <xsl:variable name="parentAnchor" select="repository:getParent('myArticle.anchor')"> | ||
+ | <parentAnchor><xsl:value-of select="$parentAnchor" /></parentAnchor> | ||
+ | </xsl:if> | ||
+ | |||
+ | <!-- Wenn per xslt beispielsweise direkt in den Solr Index importiert wird--> | ||
+ | <xsl:variable name="categoryPath" select="repository:getParentPathIDs('currentArticle.anchor', 'withoutSignature', 'sp_parent_category_iterate', 'sp_parent_category.link')"/> | ||
+ | <xsl:for-each select="fn:tokenize($categoryPath, ',')"> | ||
+ | <field name="sp_category_path"><xsl:value-of select="." /></field> | ||
+ | </xsl:for-each> | ||
+ | |||
+ | <!-- einfach Suchabfrage --> | ||
+ | <xsl:variable name="results" select="repository:search('select id, name where sp_link.link = 100010100000002841-1015')" /> | ||
+ | <xsl:for-each select="fn:tokenize($results, ',')"> | ||
+ | <!-- Hinweis: 'search' liefert nur Artikel, die einen Anker besitzen --> | ||
+ | <link name="sp_link" anchor="{.}" /> | ||
+ | </xsl:for-each> | ||
+ | |||
+ | <!-- Suchabfrage mit Volltextsuche --> | ||
+ | <xsl:variable name="hitList" select="repository:searchIDs('select id, name where luceneSearch([!{ies.infp.infosite}] , ''sp_title:Artikel*'' )')" /> | ||
+ | <xsl:for-each select="fn:tokenize($hitList, ',')"> | ||
+ | <link name="sp_link" original-id="{.}" /> | ||
+ | </xsl:for-each> | ||
+ | |||
+ | </xsl:template> | ||
+ | </xsl:stylesheet> | ||
+ | </source> | ||
Aktuelle Version vom 17. Oktober 2022, 14:24 Uhr
Im Folgenden wird beschrieben, wie innerhalb der XSL-Transformation Abfragen auf das IES-Repository erstellt werden können. Dazu ist die Ergänzung eines Namespaces nötig, mit der die Java Klasse angegeben wird, die die möglichen Funktionen zur Verfügung stellt (com.sitepark.ies.xip.importer.xslt.Repository).
Repository
Klassenname: com.sitepark.ies.xip.importer.xslt.Repository
Funktionen | Bedeutung | Rückgabe/Beispiel | ies-xip Version |
exists(anchor) | Prüft, ob das Objekt mit den Anker existiert | boolean | |
getId(anchor [, format = null]) | Liefert die ID zu dem angegebenen Anker format = null|leer |
ID 1010101000000002514-1015) |
(mit Parameter format: 2.14.5) |
getParent(anchor) | Liefert den Anker des Parent-Objektes | String | |
getParentId(anchor [, format = null]) | Liefert die ID des Parent-Objektes | ID (entsprechend des Formats s.o.) | 2.14.5 |
getParentPathIDs(anchor [, format = null [, parentLinkIterateName = null [, parentLinkFieldName = null]]] ) | Liefert eine kommaseparierte List von Parent-Pool-ID's zum angegebenen Anker. Für die Parent-Strukturen aus Navigation oder Kategorie Verknüpfungen können die Feldnamen |
zB: 'sp_parent_category_iterate' zB: 'sp_parent_category.link' |
2.14.5 |
search(query [, idFormat=null]]) | Liefert die Anker der Objekte aus dem Suchergebnis. HINWEIS: Besitzt ein Artikel keinen Anker, wird dieser ignoriert. | String, kommaseparierte Liste von Ankern. | 2.14.5 |
searchIds(query [, idFormat=null]) | Liefert die Id's der Objekte aus dem Suchergebnis. | String, kommaseparierte Liste von Id's in dem angegebenen Format(s.o.). | 2.14.5 |
Beispiel-XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:repository="com.sitepark.ies.xip.importer.xslt.Repository">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<!-- Prüfe auf Existenz-->
<xsl:if test="repository:exists('myArticle.anchor')">
<!-- ... Dinge, die bei existierendem Objekt erfolgen müssen -->
</xsl:if>
<!-- Den Parent ermitteln-->
<xsl:variable name="parentAnchor" select="repository:getParent('myArticle.anchor')">
<parentAnchor><xsl:value-of select="$parentAnchor" /></parentAnchor>
</xsl:if>
<!-- Wenn per xslt beispielsweise direkt in den Solr Index importiert wird-->
<xsl:variable name="categoryPath" select="repository:getParentPathIDs('currentArticle.anchor', 'withoutSignature', 'sp_parent_category_iterate', 'sp_parent_category.link')"/>
<xsl:for-each select="fn:tokenize($categoryPath, ',')">
<field name="sp_category_path"><xsl:value-of select="." /></field>
</xsl:for-each>
<!-- einfach Suchabfrage -->
<xsl:variable name="results" select="repository:search('select id, name where sp_link.link = 100010100000002841-1015')" />
<xsl:for-each select="fn:tokenize($results, ',')">
<!-- Hinweis: 'search' liefert nur Artikel, die einen Anker besitzen -->
<link name="sp_link" anchor="{.}" />
</xsl:for-each>
<!-- Suchabfrage mit Volltextsuche -->
<xsl:variable name="hitList" select="repository:searchIDs('select id, name where luceneSearch([!{ies.infp.infosite}] , ''sp_title:Artikel*'' )')" />
<xsl:for-each select="fn:tokenize($hitList, ',')">
<link name="sp_link" original-id="{.}" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>