Я видел пример отсюда Как вставить тег XML после определенного тега с помощью XSLT? но это не совсем моя проблема.
У меня есть xml и в некоторых его тегах отсутствует значение, например:
<row>
<title>The Outsider</title>
<year>2018</year>
<actors></actors> <!-- empty tag: add value "unknown" -->
<actors>Tadanobu Asano</actors>
<actors>Kippei Shîna</actors>
<actors>Shioli Kutsuna</actors>
<actors>Emile Hirsch</actors>
<actors>Ray Nicholson</actors>
<actors>Rory Cochrane</actors>
<actors>Nao Ohmori</actors>
<actors>Min Tanaka</actors>
<actors>Masaki Miura</actors>
<actors>Shun Sugata</actors>
<actors>Hiroya Shimizu</actors>
<actors>Hiro</actors>
<actors>Young Dais</actors>
<actors>Gô Jibiki</actors>
<genre>Action</genre>
<genre>Crime</genre>
<genre>Drama</genre>
<genre>Thriller</genre>
<description/> <!-- here is missing <description> -->
</row>
Я хочу добавить значение в тег.
Желаемый результат:
<row>
<title>The Outsider</title>
<year>2018</year>
<actors>Unknown</actors> <!-- add word "unknown" if tag is empty -->
<actors>Tadanobu Asano</actors>
<actors>Kippei Shîna</actors>
<actors>Shioli Kutsuna</actors>
<actors>Emile Hirsch</actors>
<actors>Ray Nicholson</actors>
<actors>Rory Cochrane</actors>
<actors>Nao Ohmori</actors>
<actors>Min Tanaka</actors>
<actors>Masaki Miura</actors>
<actors>Shun Sugata</actors>
<actors>Hiroya Shimizu</actors>
<actors>Hiro</actors>
<actors>Young Dais</actors>
<actors>Gô Jibiki</actors>
<genre>Action</genre>
<genre>Crime</genre>
<genre>Drama</genre>
<genre>Thriller</genre>
<description>The Outsider<description/> <!-- complete <description> with <title> value -->
</row>
До сих пор я пробовал с этим:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output version="1.0" encoding="UTF-8" indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*" name="ident">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="row[not(description)]">
<xsl:copy>
<xsl:apply-templates select="genre"/>
<description>
<xsl:value-of select="./title" />
</description>
<xsl:apply-templates select="*[not(self::genre)]"/>
</xsl:copy>
</xsl:template>
</xsl:transform>
Но я не получаю то, что хочу, на выходе xml. Вы можете помочь мне? Спасибо.