Я хочу преобразовать одно сообщение XML в другое. Мое входное сообщение в настоящее время содержит несколько пустых элементов с атрибутами @ nil = ture value. Я хочу, чтобы эти элементы были созданы пустыми, но без атрибута nill. Пожалуйста, смотрите ниже мой текущий прогресс:
Ввод XML:
<?xml version="1.0" encoding="UTF-8"?>
<collection>
<row>
<nr>A00</nr>
<type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
</row>
<row>
<nr>A01</nr>
<type>mash</type>
</row>
</collection>
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="//*[local-name()='collection']">
<jsonArray>
<xsl:text disable-output-escaping="yes"><?xml-multiple?></xsl:text>
<xsl:for-each select="//*[local-name()='row']">
<jsonObject>
<xsl:copy-of select="node() except @nil" />
</jsonObject>
</xsl:for-each>
</jsonArray>
</xsl:template>
</xsl:stylesheet>
Текущий выход:
<?xml version="1.0" encoding="UTF-8"?>
<jsonArray>
<?xml-multiple?>
<jsonObject>
<nr>A00</nr>
<type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
</jsonObject>
<jsonObject>
<nr>A01</nr>
<type>mash</type>
</jsonObject>
</jsonArray>
Ожидаемый результат:
<?xml version="1.0" encoding="UTF-8"?>
<jsonArray>
<?xml-multiple?>
<jsonObject>
<nr>A00</nr>
<type/>
</jsonObject>
<jsonObject>
<nr>A01</nr>
<type>mash</type>
</jsonObject>
</jsonArray>