У меня есть этот MODSXSLT выбрать подэлемент принять
<modsCollection>
<mods ID="master">
<originInfo>
<dateOther encoding="8601" type="publication">2016</dateOther>
</originInfo>
<originInfo>
<dateOther encoding="8601" type="onlineFirst">2015</dateOther>
</originInfo>
<originInfo>
<dateOther encoding="8601" type="accepted">2014</dateOther>
</originInfo>
<originInfo>
<dateOther encoding="8601" type="submitted">2013</dateOther>
</originInfo>
</mods>
</modsCollection>
Мне нужно преобразовать этот элемент dateOther и эквивалентный постоянный ток: дата, но я должен взять только один dateOther в зависимости от атрибута типа (если существует публикация, в которой мы принимаем эту дату. Другое, если это не так, как мы делаем onFirstFirst, если она не существует, что принято и так далее).
Таким образом, в случае верхних MODS мы создали бы
<dc:date>2016</dc:date>
потому dateOther с атрибутом типа = публикации существовало, если бы не мы бы тип = onlineFirst и т.д.
Порядок датыДругая внешность может быть разной, и может быть только один или несколько из них.
Проблема начинается с трансформации, я не могу выбрать все элементы originInfo/dateOther, так что я могу сравнить их выбрать
<xsl:template match="//mods:mods[@ID = 'master']/mods:originInfo/mods:dateOther">
<xsl:choose>
<xsl:when test="...">
<dc:date>...</dc:date>
</xsl:when>
...
</xsl:choose>
</xsl:template>
Любая помощь, чтобы решить это было бы полезно.
Укажите, используете ли вы XSLT 1.0 или 2.0. –