XIP und XSLT mit Repository Abfragen: Unterschied zwischen den Versionen

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen
Zeile 63: Zeile 63:
 
|
 
|
 
|-
 
|-
|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 79: Zeile 79:
 
|
 
|
 
|-
 
|-
|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
Zeile 91: Zeile 91:
 
|2.14.5
 
|2.14.5
 
|-
 
|-
|search(anchor)
+
|search(query [, asIds=false [, idFormat=null]])
 
|Liefert die Anker der Objekte aus dem Suchergebnis. HINWEIS: Besitzt ein Artikel keinen Anker, wird dieser ignoriert.  
 
|Liefert die Anker der Objekte aus dem Suchergebnis. HINWEIS: Besitzt ein Artikel keinen Anker, wird dieser ignoriert.  
 
|String, kommaseparierte Liste von Ankern.
 
|String, kommaseparierte Liste von Ankern.
 
|2.14.5
 
|2.14.5
 
|-
 
|-
|searchIds(anchor, idFormat = null)
+
|searchIds(query [, idFormat=null])
 
|Liefert die Id's der Objekte aus dem Suchergebnis.
 
|Liefert die Id's der Objekte aus dem Suchergebnis.
 
|String, kommaseparierte Liste von Id's in dem angegebenen Format(s.o.).
 
|String, kommaseparierte Liste von Id's in dem angegebenen Format(s.o.).

Version vom 20. Dezember 2017, 09:38 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).


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}] ,  &apos;&apos;sp_title:Artikel*&apos;&apos; )')" />
        <xsl:for-each select="fn:tokenize(results, ',')">
            <link name="sp_link" original-id="{.}" />
        </xsl:for-each>

    </xsl:template>
</xsl:stylesheet>


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
format = withoutType
format = withoutSignature

ID

1010101000000002514-1015)
1010101000000002514
2514

(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 parentLinkIterateName und parentLinkFieldName der Verknüpfung angegeben werden

zB: 'sp_parent_category_iterate'

zB: 'sp_parent_category.link'

2.14.5
search(query [, asIds=false [, 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