Как отобразить мой XML-файл MODS (один на английском и один французский), используя мой файл XSLT - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть два XML-файла. Один с английскими метками и один с французскими метками. У меня есть файл xslt, который может подобрать текст, но не отображает текст на выбранном языке.

Я новичок в xml и xslt. Любые идеи приветствуются.

Английский XML

  <recordCreationDate displayLabel="Dates of Creation">Dates of Creation</recordCreationDate>
<languageOfCataloging>
    <languageTerm type="text" lang="eng">English</languageTerm>
</languageOfCataloging> 
</recordInfo>

Французский XML

    <recordCreationDate displayLabel="Dates de création">Dates de création</recordCreationDate>
    <languageOfCataloging>
    <languageTerm type="text" lang="fre"></languageTerm>
</languageOfCataloging> 
</recordInfo>

XSLT-файл

 <?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="3.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:mods="http://www.loc.gov/mods/v3"
    xmlns:fn="http://www.w3.org/2005/xpath-functions"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"


 <xsl:output method="html" encoding="UTF-8"/>

<!-- Root Element -->

<xsl:variable name="xslt" select="'mods'"/>

<xsl:include href="common_editor_templates.xslt"/>

<!-- Base Template -->

<xsl:template match="/">

  <div>


<!-- Put the stylesheet override in here. -->
<xsl:if test="$cssOverride">
    <link rel="stylesheet" type="text/css">
           <xsl:attribute name="href">
                  <xsl:value-of select="$cssOverride"/>
           </xsl:attribute>
     </link>
 </xsl:if>

<br/>
<!-- Main Title for page -->
     <span class="XSLTransformTitle">
            <xsl:value-of select="'Metadata'"/>
      </span>


<br />
<!-- Values Table -->
      <table class="XSLTransformTable">
             <col width="200px" />
             <col width="300px" />
             <xsl:call-template name="MODS-Details" />
       </table>
       </div>
</xsl:template>

 <!-- English Fields Template -->

 <xsl:template name="MODS-Details"> 

     <!-- <xsl:call-template name="add-field-node">
            <xsl:with-param name="label"></xsl:with-param><xsl:with-param name="field"><path>/Q{http://www.loc.gov/mods/v3}mods/Q{http://www.loc.gov/mods/v3}recordInfo/Q{http://www.loc.gov/mods/v3}languageOfCataloging/Q{http://www.loc.gov/mods/v3}languageTerm [@type='text']</path></xsl:with-param>
     </xsl:call-template> -->

     <xsl:call-template name="add-field-node">
        <xsl:with-param name="label"></xsl:with-param><xsl:with-param name="field"><path>/Q{http://www.loc.gov/mods/v3}mods/Q{http://www.loc.gov/mods/v3}titleInfo/Q{http://www.loc.gov/mods/v3}title</path></xsl:with-param>
     </xsl:call-template>

     <xsl:call-template name="add-field-node">
         <xsl:with-param name="label"></xsl:with-param><xsl:with-param name="field"><path>/Q{http://www.loc.gov/mods/v3}mods/Q{http://www.loc.gov/mods/v3}recordInfo/Q{http://www.loc.gov/mods/v3}recordIdentifier</path></xsl:with-param>
     </xsl:call-template>

     <xsl:call-template name="add-field-node">
            <xsl:with-param name="label"></xsl:with-param><xsl:with-param name="field"><path>/Q{http://www.loc.gov/mods/v3}mods/Q{http://www.loc.gov/mods/v3}recordInfo/Q{http://www.loc.gov/mods/v3}recordCreationDate</path></xsl:with-param>
     </xsl:call-template>

     <xsl:call-template name="add-field-node">
            <xsl:with-param name="label"></xsl:with-param><xsl:with-param name="field"><path>/Q{http://www.loc.gov/mods/v3}mods/Q{http://www.loc.gov/mods/v3}typeOfResource</path></xsl:with-param>
     </xsl:call-template>

   </xsl:template>


</xsl:stylesheet>

В идеале, вывод будет захватывать французский текст и / илианглийский текст и отображать эту информацию в качестве названия поля. Тем не менее, он не захватывает текст из XML. Я могу только вручную ввести его в файл xslt.

...