Skip to content
Vladimír Lahoda edited this page Nov 26, 2020 · 5 revisions

Přehled šablonovacího systému

Zobrazovací šablony

Obsah většiny částí uživatelského rozhraní K4 je získáván z FOXML objektů nebo z výsledků dotazů do indexu SOLR a jejich transformací do požadovaného tvaru pomocí XSLT šablon. Výchozí šablony je možno přepsat umístěním vlastní šablony se stejným názvem jako má výchozí šablona do adresáře ~/.kramerius4/xsl.

V následující tabulce je uveden přehled názvů všech použitých šablon, odkazů na jejich výchozí obsah, zdroj dat, na který jsou aplikovány a místo v GUI, ve kterém je použit jejich výstup.

Zdrojem dat je buď XML obsah uvedeného datastreamu z FOXML objektu, jeho formát můžete najít v odpovídající veřejné specifikaci (MODS, ALTO). Pokud je vstupem dat výsledek dotazu do indexu SOLR, jeho obecný tvar je pospán zde:

SOLR response xml: http://wiki.apache.org/solr/XMLResponseFormat

SOLR Terms Component response: http://wiki.apache.org/solr/TermsComponent

Konkrétní obsah formátu SOLR K4 je určen konfiguračním souborem schema.xml a šablonou K4.xslt, jejich obsah je posán níže v sekci Indexovací šablona.

Název souboru (v adresáři ~/.kramerius4/xsl) Výchozí šablona (v souboru search.war) Vstupní data Použití
alto.xsl /inc/details/xsl/alto.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/details/xsl/alto.xsl FOXML datastream ALTO
autocomplete.xsl /inc/home/xsl/autocomplete.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/home/xsl/autocomplete.xsl SOLR Terms Component response
da.xsl /inc/results/xsl/da.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/results/xsl/da.xsl SOLR response xml
dt.xsl /inc/home/dt.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/home/dt.xsl SOLR response xml
extInfo.xsl /inc/results/xsl/extInfo.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/results/xsl/extInfo.xsl SOLR response xml
facets.xsl /inc/results/xsl/facets.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/results/xsl/facets.xsl SOLR response xml
facets_home.xsl /inc/home/xsl/facets_home.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/home/xsl/facets_home.xsl SOLR response xml
grouped_results.xsl /inc/results/xsl/grouped_results.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/results/xsl/grouped_results.xsl SOLR response xml
indexer.xsl /inc/admin/indexer.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/admin/indexer.xsl SPARQL response xml
insearch.xsl /inc/details/xsl/insearch.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/details/xsl/insearch.xsl SOLR response xml
mods.xsl /inc/details/xsl/mods.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/details/xsl/mods.xsl FOXML datastream BIBLIO-MODS
modsFull.xsl /inc/details/xsl/modsFull.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/details/xsl/modsFull.xsl FOXML datastream BIBLIO-MODS
not_grouped_results.xsl /inc/results/xsl/not_grouped_results.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/results/xsl/not_grouped_results.xsl SOLR response xml
results_header.xsl /inc/results/xsl/results_header.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/results/xsl/results_header.xsl SOLR response xml
results_main_rss.xsl /inc/results/xsl/results_main_rss.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/results/xsl/results_main_rss.xsl SOLR response xml
suggest.xsl /inc/details/xsl/suggest.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/details/xsl/suggest.xsl SOLR response xml
treeNode.xsl /inc/details/xsl/treeNode.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/details/xsl/treeNode.xsl SOLR response xml
uncollapsed.xsl /inc/results/xsl/uncollapsed.xsl https://github.com/ceskaexpedice/kramerius/blob/master/search/web/inc/results/xsl/uncollapsed.xsl SOLR response xml

Indexovací šablona

Vstupem procesu indexace jsou jednotlivé objekty FOXML, na něž je aplikována indexační XSLT šablona, která data transformuje do tvaru definovaného v konfiguračním schematu SOLR

Defaultní šablona je v knihovně indexer.jar uvnitř search.war, její obsah je zde

Šablonu je možno předefinovat souborem K4.xslt v adresáři ~/.kramerius4/xsl

Následující tabulka obsahuje přehled jednotlivých polí ze schematu SOLR a jejich mapování ve výchozí indexační šabloně:

Pole v schema.xml Zdroj dat v FOXML
name="fedora.model" type="string" select="substring(/foxml:digitalObject/foxml:datastream[@CONTROL_GROUP='X' and @ID='RELS-EXT']/foxml:datastreamVersion[last()]/foxml:xmlContent/rdf:RDF/rdf:Description/fedora-model:hasModel/@rdf:resource, 19)"
name="document_type" type="string" multiValued="true" <xsl:for-each select="/foxml:digitalObject/foxml:datastream/foxml:datastreamVersion[last()]/foxml:xmlContent/oai_dc:dc/dc:type"/>
name="handle" type="string" select="/foxml:digitalObject/foxml:datastream[@CONTROL_GROUP='X' and @ID='RELS-EXT']/foxml:datastreamVersion[last()]/foxml:xmlContent/rdf:RDF/rdf:Description/kramerius:handle/text()"
name="status" type="string" select="foxml:objectProperties/foxml:property[@NAME='info:fedora/fedora-system:def/model#state']/@VALUE"
name="created_date" type="date" select="foxml:objectProperties/foxml:property[@NAME='info:fedora/fedora-system:def/model#createdDate']/@VALUE"
name="modified_date" type="date" select="foxml:objectProperties/foxml:property[@NAME='info:fedora/fedora-system:def/view#lastModifiedDate']/@VALUE"
name="datum_str" type="string" ExtendedFields.java. Prochází postupně nadřazené FOXML a vybírá hodnoty mods:part/mods:date/text() nebo mods:originInfo[@transliteration='publisher']/mods:dateIssued/text() nebo mods:originInfo/mods:dateIssued/text()
name="issn" type="string" <xsl:value-of select="mods:identifier[@type='isbn']/text()"/> nebo <xsl:value-of select="mods:identifier[@type='issn']/text()"/>
name="mdt" type="string" <xsl:value-of select="mods:classification[@authority='udc']/text()"/>
name="ddt" type="string" <xsl:value-of select="mods:classification[@authority='ddc']/text()"/>
name="dostupnost" type="string" select="substring(/foxml:digitalObject/foxml:datastream[@CONTROL_GROUP='X' and @ID='RELS-EXT']/foxml:datastreamVersion[last()]/foxml:xmlContent/rdf:RDF/rdf:Description/kramerius:policy, 8)"
name="keywords" type="string" multiValued="true" <xsl:for-each select="mods:subject/mods:topic/text()">
name="collection" type="string" multiValued="true" <xsl:for-each select="$rels/rdf:isMemberOfCollection"> <field name="collection" > <xsl:value-of select="substring-after(./@rdf:resource, 'info:fedora/')"/> </field> </xsl:for-each>
name="dc.title" type="text_fgs" select="translate(normalize-space(/foxml:digitalObject/foxml:datastream/foxml:datastreamVersion[last()]/foxml:xmlContent/oai_dc:dc/dc:title/text()),' ','')"
name="title_sort" type="string"
name="dc.creator" type="text_fgs" multiValued="true" <xsl:for-each select="foxml:datastream/foxml:datastreamVersion[last()]/foxml:xmlContent/oai_dc:dc/dc:creator"> <field name="dc.creator" boost="1.5"> <xsl:value-of select="text()"/> </field> </xsl:for-each>
name="language" type="string" multiValued="true" <xsl:for-each select="mods:language/mods:languageTerm/text()"> <field name="language"> <xsl:value-of select="." /> </field> </xsl:for-each>
name="dc.description" type="text_fgs" multiValued="true"
name="text_ocr" type="text_general" /foxml:digitalObject/foxml:datastream[@ID='TEXT_OCR']/foxml:datastreamVersion[last()]
name="details" type="string" multiValued="true" xpath per model. Used to show minimal data in tree
name="img_full_mime" type="string" /foxml:digitalObject/foxml:datastream[@ID='IMG_FULL']/foxml:datastreamVersion[last()]/@MIMETYPE"
name="viewable" type="boolean" <xsl:if test="/foxml:digitalObject/foxml:datastream[@ID='IMG_FULL']/foxml:datastreamVersion[last()]"/>
Clone this wiki locally