Я пытаюсь сделать некоторые упражнения на XSLT, и это мой первый XSLT попытка:Добавить элементы XML используя для-каждого из XSLT, только если значение тега не пустой
У меня есть следующий XML, как мой вход
<?xml version="1.0" encoding="UTF-8"?>
<root>
<elementA>
<elementB attB="valueb">
<elementC attC="c-value">
what I want
</elementC>
</elementB>
<elementB attB="valueb">
</elementB>
</elementA>
</root>
и следующий XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8"
indent="yes" />
<xsl:template match="/root/elementA">
<newElement>
<xsl:for-each select="elementB[@attB='valueb']">
<valuef>
<xsl:for-each select="./elementC">
<xsl:value-of select=".">
</xsl:value-of>
</xsl:for-each>
</valuef>
</xsl:for-each>
</newElement>
</xsl:template>
</xsl:stylesheet>
Преобразованный XML я получаю:
<newElement>
<valuef>
what I want
</valuef>
<valuef/>
</newElement>
Я хочу, чтобы избавиться от пустых тегов (valuef) (они создаются из-за elementB не имея elementC как ребенок).
Где я делаю неправильно?
Спасибо!
Для ваших фрагментов XML и XSLT результат, полученный с помощью http://xsltransform.net/pPJ8LVC, представляет собой просто пустой элемент ' '. Поэтому рассмотрите вопрос о редактировании вопроса и предоставите XML-ввод, для которого вы получите вывод, который, как вы говорите, получите. –
Done- Спасибо и извините за то, что не поставлял отложенный код. – user2522941