У меня есть текущая таблица стилей, которая при применении к XML-файлу возвращается с родителями и дочерними элементами с пустыми полями.XSLT - Transform XML затем удаляет пустые родители и childern
Моего текущий XSLT выглядит следующим образом
<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>
<xsl:for-each select="pdml/packet">
<PacketSRC id="{proto/field[@name='ip.src']/@show}">
<PacketDST>
<xsl:value-of select="proto/field[@name='ip.dst']/@show"/>
</PacketDST>
<PacketFLAG>
<xsl:value-of select="proto/field[@name='tcp.flags']/@showname"/>
</PacketFLAG>
<PacketPORT>
<xsl:value-of select="proto/field[@name='tcp.dstport']/@show"/>
</PacketPORT>
</PacketSRC>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
Когда преобразование завершено, некоторые целые PacketSRCs совершенно пусты в то время как другие имеют пустой PacketPORTs и PacketFLAGs.
Правильный результат выглядит следующим образом:
<PacketSRC id="192.168.1.211">
<PacketDST>192.168.1.254</PacketDST>
<PacketFLAG>.... 0000 0000 0010 = Flags: 0x002 (SYN)</PacketFLAG>
<PacketPORT>3306</PacketPORT>
</PacketSRC>
Но из-за данных, доступ к некоторым может отображаться как (оба из которых нужно удаление):
<PacketSRC id="">
<PacketDST></PacketDST>
<PacketFLAG></PacketFLAG>
<PacketPORT></PacketPORT>
</PacketSRC>
ИЛИ
<PacketSRC id="192.168.1.211">
<PacketDST>192.168.1.254</PacketDST>
<PacketFLAG></PacketFLAG>
<PacketPORT></PacketPORT>
</PacketSRC>
Я посмотрел на другие ответы переполнения стека на помощь, но я не могу связать их с моим сценарием. Поэтому мой вопрос: если любое из значений или полей пуст, удалите его из окончательного преобразования.
Проблема заключается в том, что вход сильно отличается, и причина для XSLT в первую очередь заключалась в сужении только определенных данных с определенного ввода. Три вышеупомянутых фрагмента XML - это выходы XSLT. – Taz
Это очень поможет, если вы указали INPUT XML. Все, что вы показали, это XSLT и XML OUTPUT. –
Стиль INPUT XML - это PDML. Если бы я должен был показать «Пакет», он мог бы резко измениться до следующего. Если вы понимаете, что я имею в виду. – Taz