Я делаю MODS для преобразования MODS на следующий xml. Я значительно упростил для ясности:Создание преобразованного элемента дочерний элемент sibling
<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH>
<metadata>
<mods>
<genre>Negatives (photographic)</genre>
<genre>Cellulose nitrate film</genre>
<physicalDescription>
<form>Photograph</form>
</physicalDescription>
</mods>
</metadata></OAI-PMH>
мне нужен этот результат, где genre
элементы были уже сделали form
элементы, которые являются потомками уже существующего physicalTransform
элемента:
<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH>
<metadata>
<mods>
<physicalDescription>
<form>Photograph</form>
<form>Negatives (photographic)</form>
<form>Cellulose nitrate film</form>
</physicalDescription>
</mods>
</metadata></OAI-PMH>
Как я продолжайте это делать? Я пробовал:
<xsl:template match="mods:physicalDescription">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<xsl:apply-templates select="mods:genre"/>
</xsl:copy>
</xsl:template>
<xsl:template match="mods:genre">
<xsl:element namespace="http://www.loc.gov/mods/v3" name="form" >
<xsl:value-of select="normalize-space(.)"/>
</xsl:element>
</xsl:template>
Но он не работает. Я уверен, что мне не хватает чего-то простого, но я не могу определить, что. Любая помощь будет оценена. Благодарю.
Спасибо. Я, возможно, упростил примеры. Я уже использовал шаблон идентификации в своем фактическом коде, а также использовал правильные пространства имен. Я, вероятно, должен был удалить моды: префикс из шаблонов, поскольку это вводило в заблуждение. В любом случае, спасибо за ваш ответ, который действительно решает проблему. Я буду помнить, чтобы быть более осторожным при построении примеров. – jmignault
@jmignault Добро пожаловать. Если у вас есть вопрос о том, как интегрировать этот ответ в существующий код, отправьте его все, и я рад помочь. Но в таком случае вы должны задать новый вопрос. –