Я довольно новый для XSLT преобразования и мне нужно, чтобы преобразовать набор данныхУдалить пустые элементы в XML
XML-из набора данных выглядит следующим образом
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Componentstatus>
<tp_ID>1</tp_ID>
<StatusName>Not inspected</StatusName>
<tp_Modified>2012-02-28T10:51:32+01:00</tp_Modified>
<isacute>1</isacute>
</Componentstatus>
<Componentstatus>
<tp_ID>2</tp_ID>
<StatusName>Acute</StatusName>
<tp_Modified>2012-02-28T10:51:40+01:00</tp_Modified>
</Componentstatus>
<Componentstatus>
<tp_ID>3</tp_ID>
<StatusName>See note</StatusName>
<tp_Modified>2012-02-28T10:51:45+01:00</tp_Modified>
</Componentstatus>
<Componentstatus>
<tp_ID>4</tp_ID>
<StatusName>Acceptable</StatusName>
<tp_Modified>2012-02-28T10:52:36+01:00</tp_Modified>
</Componentstatus>
<Componentstatus>
<tp_ID>5</tp_ID>
<StatusName>Action recommended</StatusName>
<tp_Modified>2012-02-28T10:53:07+01:00</tp_Modified>
</Componentstatus>
</NewDataSet>
Файл XSLT
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://ait.com/componentstatus/">
<xsl:output method="xml" version="4.0" indent="yes" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"/>
<xsl:template match="//NewDataSet" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">z
<ComponentStatusList>
<xsl:for-each select="Componentstatus">
<Status>
<xsl:attribute name="StatusId">
<xsl:value-of select="tp_ID" />
</xsl:attribute>
<StatusName>
<xsl:value-of select="StatusName"/>
</StatusName>
<Acute>
<xsl:value-of select="isacute"/>
</Acute>
</Status>
</xsl:for-each>
</ComponentStatusList>
</xsl:template>
</xsl:stylesheet>
И размноженный xml
<?xml version="1.0" encoding="utf-8"?>z
<ComponentStatusList xmlns="http://ait.com/componentstatus/">
<Status StatusId="1">
<StatusName>Not inspected</StatusName>
<Acute>1</Acute>
</Status>
<Status StatusId="2">
<StatusName>Acute</StatusName>
<Acute></Acute>
</Status>
<Status StatusId="3">
<StatusName>See note</StatusName>
<Acute></Acute>
</Status>
<Status StatusId="4">
<StatusName>Acceptable</StatusName>
<Acute></Acute>
</Status>
<Status StatusId="5">
<StatusName>Action recommended</StatusName>
<Acute></Acute>
</Status>
</ComponentStatusList>
Как видите, я получаю пустой <Acute></Acute>
, даже если отсутствует элемент isacute. Как создать XML-файл и удалите элемент в сгенерированном XML, если элемент отсутствует или, по крайней мере, установить его в <Acute xsi:nil="true" />.
Благодаря вам обоим, им жаль, что я могу принимать только один ответ – klashagelqvist