Java 8 здесь, но я не думаю, что это имеет какое-либо значение, так как я считаю, что это чистый XSL-вопрос в глубине души.
У меня есть некоторый код, который создает следующий XML (в качестве примера):
<fizz>
<account>10016</account>
<accountId>2000001347</accountId>
<buzz class="null"/>
</fizz>
Существует 3 возможных сценария для значения элемента buzz
во время выполнения:
- "Null Class Buzz" ->
<buzz class="null"/>
;или - "Жужжание ненулевого класса" ->
<buzz class="anythingOtherThanNull"/>
;или - «Обычное жужжание» ->
<buzz><complicatedXmlStructureInsideOfHere</buzz>
Таким образом, во время выполнения мы можем иметь «Нулевой класс», «Ненулевой класс» или «Нормальный Жужж». Я не хочу преобразовывать элемент buzz
в случае "Null Class Buzz". (Но я do хочу преобразовать вариации ненулевого класса Buzz и Normal Buzz.)
Вот мое XSL-преобразование:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/fizz">
<foobar>
<xsl:copy-of select="account"/>
<logId><xsl:value-of select="accountId"/></logId>
<xsl:if test="buzz">
<FLIMFLAM SEGMENT="1">
<HAPP>003</HAPP>
<SADD><xsl:value-of select="buzz"/></SADD>
</FLIMFLAM>
</xsl:if>
<foobar>
</xsl:template>
</xsl:stylesheet>
Проблема заключается в том, что он преобразует варианты Bull-класса Null и выдает:
<foobar>
<account>10016</account>
<logId>2000001347</logId>
<FLIMFLAM SEGMENT="1">
<HAPP>003</HAPP>
<SADD/>
</FLIMFLAM>
</foobar>
Принимая во внимание, что в случаеNull Class Buzz, я хочу, чтобы buzz
полностью игнорировался:
<foobar>
<account>10016</account>
<logId>2000001347</logId>
</foobar>
Есть идеи, как мне это сделать?Заранее спасибо!