XIP und XSLT mit Repository Abfragen: Unterschied zwischen den Versionen

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen
 
(9 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==
 +
Klassenname: com.sitepark.ies.xip.importer.xslt.Repository
  
===Beispiel-XSLT===
+
{| class="prettytable"
 +
|- class="hintergrundfarbe1"
 +
|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<br />
 +
format = null|leer<br />
 +
format = withoutType<br />
 +
format = withoutSignature
 +
|ID<br />
 +
1010101000000002514-1015)<br />
 +
1010101000000002514<br />
 +
2514<br />
 +
|(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.<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
 +
|zB: 'sp_parent_category_iterate'<br />
 +
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==
  
 
<source lang="xml">
 
<source lang="xml">
Zeile 16: Zeile 69:
 
         <!-- Prüfe auf Existenz-->  
 
         <!-- Prüfe auf Existenz-->  
 
         <xsl:if test="repository:exists('myArticle.anchor')">
 
         <xsl:if test="repository:exists('myArticle.anchor')">
             <!-- Dinge, die bei existierendem Objekt erfolgen müssen
+
             <!-- ...  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>
 
         </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($hitList, ',')">
 +
            <link name="sp_link" original-id="{.}" />
 +
        </xsl:for-each>
  
 
     </xsl:template>
 
     </xsl:template>
 
</xsl:stylesheet>
 
</xsl:stylesheet>
 
</source>  
 
</source>  
 
 
===Funktionen===
 
 
{| class="prettytable"
 
|- class="hintergrundfarbe1"
 
|Funktion
 
|Bedeutung
 
|-
 
|exists(anchor)
 
|Prüft, ob das Objekt mit den Anker existiert
 
|-
 
|getId(anchor)
 
|Liefert die ID zu dem angegebenen Anker
 
|-
 
|getParent(anchor)
 
|Liefert die ID des Parent-Objektes
 
|}
 
  
  

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

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