Commit 107a71c7 authored by Steinberg, Jan's avatar Steinberg, Jan

P.Lang first stage, with some questions left to be answered

parent 51eecfe0
......@@ -1782,6 +1782,105 @@ public class XsltTransformerOaiPmhBundlesStreamSourceTest {
assertTrue( metadata.contains( new SimpleMetadatum("dc.publisher.country", "DEU") ) );
}
@Test
public void getSinglePublicationLang() throws IOException {
Map<String, String> map = new HashMap<>();
String oaiDcXsltString = IOUtils.toString(
getClass().
getClassLoader().
getResourceAsStream("xslt/lang-oai-2-xmlbundle.xsl"), StandardCharsets.UTF_8);
map.put("oai_bb", oaiDcXsltString);
XsltTransformerOaiPmhBundlesStreamSource bss = new XsltTransformerOaiPmhBundlesStreamSource("https://catalog.openresearchlibrary.org/oai", map);
Bundle bundle = bss.getBundle("oai:biblioboard.com:de337a9b-a38e-4696-8106-036ab141fd0f");
LOG.info("{}", bundle);
Set<Metadatum> metadata = bundle.getMetadata();
metadata.stream().map(Object::toString).forEach(LOG::info);
assertTrue( metadata.contains( new SimpleMetadatum("dc.type.stock", "monograph") ) );
assertTrue( metadata.contains( new SimpleMetadatum("dc.type.document", "20") ) );
// assertTrue( metadata.contains( new SimpleMetadatum("dc.source.series", "WZB Discussion Paper") ) );
assertTrue( metadata.contains( new SimpleMetadatum("dc.description.pubstatus", "1") ) );
assertTrue( metadata.contains( new SimpleMetadatum("dc.contributor.author", "Capote Díaz, Virginia") ) );
assertEquals( 1 , metadata.stream().filter(m -> m.getKey().equals("dc.contributor.author") ).count() );
// assertTrue( metadata.contains( new SimpleMetadatum("dc.contributor.corporateeditor", "381") ) );
// assertTrue( metadata.contains( new SimpleMetadatum("ssoar.contributor.institution", "WZB") ) );
assertTrue( metadata.contains( new SimpleMetadatum("dc.description.review", "2") ) );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.description.review") ).count() );
assertTrue( metadata.contains( new SimpleMetadatum("dc.date.issued", "2016") ) );
assertTrue( metadata.contains( new SimpleMetadatum("dc.description.abstract", "es", "\"Reescribir la violencia supone un acercamiento al conflicto armado en Colombia desde la obra de escritoras que narran las experiencias de víctimas de la guerra. Diarios, autobiografías, historias de vida, entrevistas y narrativa testimonial serán los cauces de expresión más idóneos para la perpetuación de la memoria de mujeres asediadas por la violencia. El presente volumen recoge un análisis de la obra híbrida, entre el periodismo y la ficción, de Silvia Galvis, Patricia Lara, Elvira Sánchez-Blake y Laura Restrepo, basado en la manera en la que estas escritoras llevan a cabo la resemantización de eventos históricos y el rescate del olvido de experiencias individuales, desde una perspectiva diferente a la oficial.\"") ) );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.description.abstract") ).count() );
assertTrue( metadata.contains( new SimpleMetadatum("dc.identifier.url", "https://openresearchlibrary.org/ext/api/media/de337a9b-a38e-4696-8106-036ab141fd0f/assets/external_content.pdf") ) );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.identifier.url") ).count() );
assertTrue( metadata.contains( new SimpleMetadatum("dc.identifier.isbn", "9782807600386") ) );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.identifier.isbn") ).count() );
assertTrue( metadata.contains( new SimpleMetadatum("dc.language", "es") ) );
//assertTrue( metadata.contains( new SimpleMetadatum("dc.source.series", "WZB Discussion Paper") ) );
assertTrue( metadata.contains( new SimpleMetadatum("dc.publisher", "Lang") ) );
assertTrue( metadata.contains( new SimpleMetadatum("dc.rights.licence", "20") ) );
assertTrue( metadata.contains( new SimpleMetadatum("dc.title", "es", "Reescribir la violencia : Narrativas de la memoria en la literatura femenina colombiana contemporánea") ) );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.title") ).count() );
assertTrue( metadata.contains( new SimpleMetadatum("internal.dda.reference", "https://catalog.openresearchlibrary.org/oai@@oai:biblioboard.com:de337a9b-a38e-4696-8106-036ab141fd0f") ) );
assertTrue( metadata.contains( new SimpleMetadatum("dc.publisher.country", "CHE") ) );
// assertTrue( metadata.contains( new SimpleMetadatum("internal.identifier.classoz", "10900") ) );
// assertTrue( metadata.contains( new SimpleMetadatum("dc.subject.classoz", "10900") ) );
assertTrue( metadata.contains( new SimpleMetadatum("internal.identifier.ddc", "300") ) );
assertTrue( metadata.contains( new SimpleMetadatum("internal.status", "formal und inhaltlich fertig erschlossen") ) );
assertTrue( metadata.contains( new SimpleMetadatum("dc.publisher.city", "Bern u.a.") ) );
// Set<InputStream> fileSet = bundle.getContents();
// assertEquals( 1, fileSet.size());
// oai:biblioboard.com:96f40dea-9503-420a-8dfb-05a8f0b0c494
// ########
Bundle bundle2 = bss.getBundle("oai:biblioboard.com:96f40dea-9503-420a-8dfb-05a8f0b0c494");
LOG.info("{}", bundle2);
Set<Metadatum> metadata2 = bundle2.getMetadata();
metadata2.stream().map(Object::toString).forEach(LOG::info);
assertTrue( metadata2.contains( new SimpleMetadatum("dc.type.stock", "collection") ) );
assertTrue( metadata2.contains( new SimpleMetadatum("dc.type.document", "24") ) );
// assertTrue( metadata2.contains( new SimpleMetadatum("dc.source.journal", "Wirtschaftsdienst") ) );
// assertTrue( metadata2.contains( new SimpleMetadatum("dc.source.volume", "87") ) );
// assertTrue( metadata2.contains( new SimpleMetadatum("dc.source.issue", "8") ) );
// assertTrue( metadata2.contains( new SimpleMetadatum("dc.source.pageinfo", "518-524") ) );
assertTrue( metadata2.contains( new SimpleMetadatum("dc.description.pubstatus", "1") ) );
// assertTrue( metadata2.contains( new SimpleMetadatum("dc.contributor.author", "Jochimsen, Beate") ) );
assertEquals( 0 , metadata2.stream().filter(m -> m.getKey().equals("dc.contributor.author") ).count() );
assertEquals( 0 , metadata2.stream().filter(m -> m.getKey().equals("dc.contributor.corporateeditor") ).count() );
assertTrue( metadata2.contains( new SimpleMetadatum("dc.contributor.editor", "Brady, Nicola")));
assertTrue( metadata2.contains( new SimpleMetadatum("dc.contributor.editor", "Belenguer, Susana Bayó")));
// assertTrue( metadata2.contains( new SimpleMetadatum("dc.contributor.corporateeditor", "381") ) );
// assertTrue( metadata2.contains( new SimpleMetadatum("ssoar.contributor.institution", "WZB") ) );
assertTrue( metadata2.contains( new SimpleMetadatum("dc.description.review", "2") ) );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.description.review") ).count() );
assertTrue( metadata2.contains( new SimpleMetadatum("dc.date.issued", "2019") ) );
assertTrue( metadata2.contains( new SimpleMetadatum("dc.description.abstract", "en", "In the aftermath of the twentieth century’s raging warfare, attempts were made to create an environment in which new relationships between European nations could be built around a common identity. Yet, in the twenty-first century, identity conflicts are gaining a new intensity in parts of the continent. In the analysis of some sub-state nationalist parties, the prospect of European Union membership reduces the economic and political risks of secession. Meanwhile, to the east, any moves towards expansion of EU membership are viewed by Russia not as a peace project but as acts of aggression. This volume assembles a series of comparative and single-area case studies drawn from different academic disciplines.") ) );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.description.abstract") ).count() );
// assertTrue( metadata2.contains( new SimpleMetadatum("dc.identifier.handle", "http://hdl.handle.net/10419/42781") ) );
// assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.identifier.handle") ).count() );
assertTrue( metadata2.contains( new SimpleMetadatum("dc.identifier.doi", "https://doi.org/10.3726/b10560") ) );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.identifier.doi") ).count() );
assertTrue( metadata2.contains( new SimpleMetadatum("dc.language", "en") ) );
// assertTrue( metadata2.contains( new SimpleMetadatum("dc.rights.licence", "3") ) );
assertTrue( metadata2.contains( new SimpleMetadatum("dc.title", "en", "Pulling Together or Pulling Apart? : Perspectives on Nationhood, Identity, and Belonging in Europe") ) );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.title") ).count() );
// assertTrue( metadata2.contains( new SimpleMetadatum("internal.dda.reference", "http://www.econstor.eu/dspace-oai/request@@oai:econstor.eu:10419/42781") ) );
assertTrue( metadata2.contains( new SimpleMetadatum("dc.publisher.country", "CHE") ) );
// assertTrue( metadata.contains( new SimpleMetadatum("internal.identifier.classoz", "10900") ) );
// assertTrue( metadata.contains( new SimpleMetadatum("dc.subject.classoz", "10900") ) );
assertTrue( metadata2.contains( new SimpleMetadatum("internal.identifier.ddc", "300") ) );
assertTrue( metadata2.contains( new SimpleMetadatum("internal.status", "formal und inhaltlich fertig erschlossen") ) );
assertTrue( metadata2.contains( new SimpleMetadatum("dc.identifier.isbn", "9781789976755") ) );
assertTrue( metadata2.contains( new SimpleMetadatum("dc.identifier.url", "https://openresearchlibrary.org/ext/api/media/96f40dea-9503-420a-8dfb-05a8f0b0c494/assets/external_content.epub") ) );
assertTrue( metadata2.contains( new SimpleMetadatum("dc.rights.licence", "16") ) );
Set<InputStream> fileSet2 = bundle2.getContents();
assertEquals( 3, fileSet2.size());
}
@Test
public void iterateThroughFqsPublications() throws IOException {
......
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:cc="http://www.d-nb.de/standards/cc/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcmitype="http://purl.org/dc/dcmitype/"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:ddb="http://www.d-nb.de/standards/ddb/"
xmlns:dini="http://www.d-nb.de/standards/xmetadissplus/type/"
xmlns:doi="http://www.d-nb.de/standards/doi/"
xmlns:hdl="http://www.d-nb.de/standards/hdl/"
xmlns:mml="http://www.w3.org/1998/Math/MathML"
xmlns:nlm="http://dtd.nlm.nih.gov/publishing/2.3"
xmlns:oai="http://www.openarchives.org/OAI/2.0/"
xmlns:oai_bb="http://catalog.biblioboard.com/schemas/oai/biblioboard/"
xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
xmlns:oai_marc="http://www.openarchives.org/OAI/1.1/oai_marc"
xmlns:oaire="http://namespace.openaire.eu/schema/oaire/"
xmlns:pc="http://www.d-nb.de/standards/pc/"
xmlns:thesis="http://www.ndltd.org/standards/metadata/etdms/1.0/"
xmlns:urn="http://www.d-nb.de/standards/urn/"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xMetaDiss="http://www.d-nb.de/standards/xmetadissplus/"
xmlns:xoai="http://www.lyncode.com/xoai"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:zoai="http://git.gesis.org/dda/zoai">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- <xsl:copy-of select="."/> -->
<!-- <xsl:message terminate="no">here is some message for stderr, e.g. <xsl:value-of select='text()' /> </xsl:message> -->
<!-- override default template -->
<xsl:template match="*" />
<xsl:template match="/">
<xsl:element name="bundle">
<xsl:element name="metadata">
<xsl:apply-templates select="oai:OAI-PMH/oai:GetRecord/oai:record/oai:metadata/oai_bb:bb" />
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template match="oai:OAI-PMH/oai:GetRecord/oai:record/oai:metadata/oai_bb:bb">
<xsl:apply-templates select="dc:title" />
<xsl:apply-templates select="dc:contributor" />
<xsl:apply-templates select="dc:creator" />
<xsl:apply-templates select="dc:date" />
<xsl:apply-templates select="dc:description" />
<xsl:apply-templates select="dc:language" />
<xsl:apply-templates select="dc:source[@xml:lang='en-US']" />
<xsl:apply-templates select="dc:identifier[matches(text(), '^DOI:http')]" />
<xsl:apply-templates select="dc:identifier[matches(text(), 'https.*openresearchlibrary\.org.*\.pdf')]" />
<xsl:apply-templates select="dc:identifier[matches(text(), 'https.*openresearchlibrary\.org.*\.epub')]" />
<xsl:apply-templates select="dc:identifier[matches(text(), '^ISBN')]" />
<xsl:apply-templates select="dc:type" />
<xsl:apply-templates select="dc:rights" />
<xsl:call-template name="staticFields"/>
</xsl:template>
<xsl:template name="staticFields">
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.description.pubstatus'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="'1'"/>
</xsl:call-template>
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.description.review'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="'2'"/>
</xsl:call-template>
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.publisher'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="'Lang'"/>
</xsl:call-template>
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.publisher.country'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="'CHE'"/>
</xsl:call-template>
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.publisher.city'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="'Bern u.a.'"/>
</xsl:call-template>
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'internal.identifier.ddc'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="'300'"/>
</xsl:call-template>
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'internal.status'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="'formal und inhaltlich fertig erschlossen'"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="dc:creator">
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.contributor.author'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="text()"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="dc:contributor">
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.contributor.editor'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="text()"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="dc:date">
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.date.issued'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="substring(text(),1,4)"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="dc:description">
<xsl:variable name="sanitizedLanguage" select="zoai:sanitizeLanguage( ../dc:language )" />
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.description.abstract'"/>
<xsl:with-param name="language" select="$sanitizedLanguage"/>
<xsl:with-param name="value" select="normalize-space(text())"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="dc:language">
<xsl:variable name="sanitizedLanguage" select="zoai:sanitizeLanguage( text() )" />
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.language'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="$sanitizedLanguage"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="dc:identifier[matches(text(), '^DOI:http')]">
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.identifier.doi'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="replace(text(), 'DOI:', '')"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="dc:identifier[matches(text(), 'https.*openresearchlibrary\.org.*\.pdf')]">
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.identifier.url'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="text()"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="dc:identifier[matches(text(), 'https.*openresearchlibrary\.org.*\.epub')]">
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.identifier.url'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="text()"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="dc:identifier[matches(text(), '^ISBN')]">
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.identifier.isbn'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="replace(text(),'ISBN:','')"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="dc:source[@xml:lang='en-US']">
<xsl:variable name="pageinfo" select="tokenize( text(),'; ' )[last()]" />
<xsl:if test="$pageinfo != '' and matches($pageinfo, '^\d+(-\d+)?')">
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.source.pageinfo'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="$pageinfo"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$pageinfo != '' and matches($pageinfo, '^\w\d+(-\w\d+)?')">
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.source.pageinfo'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="$pageinfo"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="dc:rights">
<xsl:if test="starts-with(text(), 'https://creativecommons.org/licenses/by/4.0')">
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.rights.licence'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="'16'"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="starts-with(text(), 'https://creativecommons.org/licenses/by-nc-nd/4.0')">
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.rights.licence'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="'20'"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="dc:type">
<xsl:choose>
<xsl:when test="../dc:contributor">
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.type.stock'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="'collection'"/>
</xsl:call-template>
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.type.document'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="'24'"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.type.stock'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="'monograph'"/>
</xsl:call-template>
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.type.document'"/>
<xsl:with-param name="language" select="''"/>
<xsl:with-param name="value" select="'20'"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.subject.other'"/>
<xsl:with-param name="language" select="'en'"/>
<xsl:with-param name="value" select="text()"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="dc:title">
<xsl:variable name="sanitizedLanguage" select="zoai:sanitizeLanguage( ../dc:language )" />
<xsl:variable name="sanitizedMainLanguage" select="zoai:sanitizeLanguage( /oai:OAI-PMH/oai:GetRecord/oai:record/oai:metadata/oai_bb:bb/dc:language )" />
<xsl:choose>
<xsl:when test="$sanitizedLanguage = $sanitizedMainLanguage">
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.title'"/>
<xsl:with-param name="language" select="$sanitizedLanguage"/>
<xsl:with-param name="value" select="text()"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="new-metadatum">
<xsl:with-param name="key" select="'dc.title.alternative'"/>
<xsl:with-param name="language" select="$sanitizedLanguage"/>
<xsl:with-param name="value" select="text()"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="new-metadatum">
<xsl:param name="key" />
<xsl:param name="language" />
<xsl:param name="value" />
<xsl:element name="metadatum">
<xsl:element name="key">
<xsl:value-of select="$key" />
</xsl:element>
<xsl:if test="$language != ''">
<xsl:variable name="sanitizedLanguage" select="zoai:sanitizeLanguage($language)" />
<xsl:element name="language">
<xsl:value-of select="$sanitizedLanguage" />
</xsl:element>
</xsl:if>
<xsl:element name="value">
<xsl:value-of select="$value" />
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:function name="zoai:sanitizeLanguage">
<xsl:param name="inputLanguage" />
<xsl:choose>
<xsl:when test="$inputLanguage = 'ger' or $inputLanguage = 'DE' or $inputLanguage = 'de-DE' or $inputLanguage = 'deu' or $inputLanguage = 'Deutsch'">
<xsl:value-of select="'de'" />
</xsl:when>
<xsl:when test="$inputLanguage = 'eng' or $inputLanguage = 'EN' or $inputLanguage = 'en-US' or $inputLanguage = 'en-GB' or $inputLanguage = 'English'">
<xsl:value-of select="'en'" />
</xsl:when>
<xsl:when test="$inputLanguage = 'esp' or $inputLanguage = 'ES' or $inputLanguage = 'es' or $inputLanguage = 'Spanish' or $inputLanguage = 'Spanisch'">
<xsl:value-of select="'es'" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$inputLanguage" />
</xsl:otherwise>
</xsl:choose>
</xsl:function>
</xsl:stylesheet>
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment