Forcing Empty CDATA Elements

gaura

New Member
I was questioned if i could transform an xml by using xsl (1.0) but with keeping the CDATA elements even if there is no content in it. As xsl beginner i am a little bit overwhelmed by that question...here is a simple sample.what i have\[code\]<AMOUNT/>\[/code\]what i want\[code\]<AMOUNT><![CDATA[]]></AMOUNT>\[/code\]
  • is there a way to force empty cdata segments with no content?
  • Is there a way to do it for all elements in the file?
  • Is there a way to do it just for the ones in the cdata-section-elements?
(have a look at the AMOUNT element)here is my sample xml\[code\]<?xml version="1.0" encoding="iso-8859-1" ?> <Artikel> <Temp> <Zeile>107</Zeile> <Artikelzubehoerdaten> <Artikelzubehoerdaten> <ZubehoerID>18</ZubehoerID> <Mandant>88</Mandant> <UrsprungsArt>1</UrsprungsArt> <Ursprungsnummer>99100091</Ursprungsnummer> <UrsprungsAuspraegungID>0</UrsprungsAuspraegungID> <ZubehoerArt>1</ZubehoerArt> <Zubehoernummer>00500041</Zubehoernummer> <ZubehoerAuspraegungID>0</ZubehoerAuspraegungID> <Automatisch>0</Automatisch> <Mengenberechnung>1</Mengenberechnung> <MengenFaktor>1.0000</MengenFaktor> <Basismengeneinheit>Stk</Basismengeneinheit> <Preisgrundlagen>2</Preisgrundlagen> <ManuellerPreis>0.0000</ManuellerPreis> <PreislisteID>0</PreislisteID> <Timestamp>AAAAAAAEbVw=</Timestamp> <Gruppendaten/> </Artikelzubehoerdaten> <Artikelzubehoerdaten> <ZubehoerID>19</ZubehoerID> <Mandant>88</Mandant> <UrsprungsArt>1</UrsprungsArt> <Ursprungsnummer>99100091</Ursprungsnummer> <UrsprungsAuspraegungID>0</UrsprungsAuspraegungID> <ZubehoerArt>2</ZubehoerArt> <Zubehoernummer>100</Zubehoernummer> <Automatisch>0</Automatisch> <Mengenberechnung>0</Mengenberechnung> <MengenFaktor>0.0000</MengenFaktor> <Preisgrundlagen>0</Preisgrundlagen> <ManuellerPreis>0.0000</ManuellerPreis> <PreislisteID>0</PreislisteID> <Timestamp>AAAAAAAEbWA=</Timestamp> <Gruppendaten> <ZubehoerID>1</ZubehoerID> <Mandant>88</Mandant> <UrsprungsArt>2</UrsprungsArt> <Ursprungsnummer>100</Ursprungsnummer> <ZubehoerArt>1</ZubehoerArt> <Zubehoernummer>10300003</Zubehoernummer> <ZubehoerAuspraegungID>0</ZubehoerAuspraegungID> <Automatisch>0</Automatisch> <Mengenberechnung>2</Mengenberechnung> <MengenFaktor>1.0000</MengenFaktor> <Basismengeneinheit>Stk</Basismengeneinheit> <Preisgrundlagen>2</Preisgrundlagen> <ManuellerPreis>0.0000</ManuellerPreis> <PreislisteID>0</PreislisteID> <Timestamp>AAAAAAABuBI=</Timestamp> </Gruppendaten> <Gruppendaten> <ZubehoerID>2</ZubehoerID> <Mandant>88</Mandant> <UrsprungsArt>2</UrsprungsArt> <Ursprungsnummer>100</Ursprungsnummer> <ZubehoerArt>1</ZubehoerArt> <Zubehoernummer>10300001</Zubehoernummer> <ZubehoerAuspraegungID>0</ZubehoerAuspraegungID> <Automatisch>0</Automatisch> <Mengenberechnung>2</Mengenberechnung> <MengenFaktor>1.0000</MengenFaktor> <Basismengeneinheit>Stk</Basismengeneinheit> <Preisgrundlagen>2</Preisgrundlagen> <ManuellerPreis>0.0000</ManuellerPreis> <PreislisteID>0</PreislisteID> <Timestamp>AAAAAAABuBM=</Timestamp> </Gruppendaten> <Gruppendaten> <ZubehoerID>3</ZubehoerID> <Mandant>88</Mandant> <UrsprungsArt>2</UrsprungsArt> <Ursprungsnummer>100</Ursprungsnummer> <ZubehoerArt>1</ZubehoerArt> <Zubehoernummer>10300002</Zubehoernummer> <ZubehoerAuspraegungID>0</ZubehoerAuspraegungID> <Automatisch>0</Automatisch> <Mengenberechnung>2</Mengenberechnung> <MengenFaktor>1.0000</MengenFaktor> <Basismengeneinheit>Stk</Basismengeneinheit> <Preisgrundlagen>2</Preisgrundlagen> <ManuellerPreis>0.0000</ManuellerPreis> <PreislisteID>0</PreislisteID> <Timestamp>AAAAAAABuBQ=</Timestamp> </Gruppendaten> </Artikelzubehoerdaten> <Artikelzubehoerdaten> <ZubehoerID>21</ZubehoerID> <Mandant>88</Mandant> <UrsprungsArt>1</UrsprungsArt> <Ursprungsnummer>99100091</Ursprungsnummer> <UrsprungsAuspraegungID>0</UrsprungsAuspraegungID> <ZubehoerArt>2</ZubehoerArt> <Zubehoernummer>200</Zubehoernummer> <Automatisch>0</Automatisch> <Mengenberechnung>0</Mengenberechnung> <MengenFaktor>0.0000</MengenFaktor> <Preisgrundlagen>0</Preisgrundlagen> <ManuellerPreis>0.0000</ManuellerPreis> <PreislisteID>0</PreislisteID> <Timestamp>AAAAAAAEk3U=</Timestamp> <Gruppendaten> <ZubehoerID>20</ZubehoerID> <Mandant>88</Mandant> <UrsprungsArt>2</UrsprungsArt> <Ursprungsnummer>200</Ursprungsnummer> <ZubehoerArt>1</ZubehoerArt> <Zubehoernummer>00200050</Zubehoernummer> <ZubehoerAuspraegungID>0</ZubehoerAuspraegungID> <Automatisch>0</Automatisch> <Mengenberechnung>1</Mengenberechnung> <MengenFaktor>1.0000</MengenFaktor> <Basismengeneinheit>Stk</Basismengeneinheit> <Preisgrundlagen>2</Preisgrundlagen> <ManuellerPreis>0.0000</ManuellerPreis> <PreislisteID>0</PreislisteID> <Timestamp>AAAAAAAEk3I=</Timestamp> </Gruppendaten> </Artikelzubehoerdaten> </Artikelzubehoerdaten> </Temp> </Artikel>\[/code\]here is my sample xsl\[code\]<?xml version="1.0" encoding="iso-8859-1" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="iso-8859-1" indent="yes" cdata-section-elements ="ARTICLE AUTO AMOUNT GROUP_NUMBER"/> <xsl:template match="/"> <ARTICLE_LIST> <xsl:for-each select="Artikel/Temp"> <ARTICLE> <CROSS_SELLINGS> <xsl:for-each select="Artikelzubehoerdaten/Artikelzubehoerdaten[ZubehoerArt=1]"> <CROSS_SELLING> <ARTICLE><xsl:value-of select="Zubehoernummer"/></ARTICLE> <AUTO><xsl:value-of select="Automatisch"/></AUTO> <GROUP_NUMBER></GROUP_NUMBER> <AMOUNT><xsl:value-of select="MengenFaktor"/></AMOUNT> </CROSS_SELLING> </xsl:for-each> <xsl:for-each select="Artikelzubehoerdaten/Artikelzubehoerdaten[ZubehoerArt=2]"> <xsl:for-each select="Gruppendaten"> <CROSS_SELLING> <ARTICLE><xsl:value-of select="Zubehoernummer"/></ARTICLE> <AUTO><xsl:value-of select="Automatisch"/></AUTO> <GROUP_NUMBER><xsl:value-of select="Ursprungsnummer"/></GROUP_NUMBER> <AMOUNT></AMOUNT> </CROSS_SELLING> </xsl:for-each> </xsl:for-each> </CROSS_SELLINGS> </ARTICLE> </xsl:for-each> </ARTICLE_LIST> </xsl:template></xsl:stylesheet>\[/code\]here is the actual output\[code\]<?xml version="1.0" encoding="iso-8859-1"?><ARTICLE_LIST> <ARTICLE> <CROSS_SELLINGS> <CROSS_SELLING> <ARTICLE><![CDATA[00500041]]></ARTICLE> <AUTO><![CDATA[0]]></AUTO> <GROUP_NUMBER/> <AMOUNT><![CDATA[1.0000]]></AMOUNT> </CROSS_SELLING> <CROSS_SELLING> <ARTICLE><![CDATA[10300003]]></ARTICLE> <AUTO><![CDATA[0]]></AUTO> <GROUP_NUMBER><![CDATA[100]]></GROUP_NUMBER> <AMOUNT/> </CROSS_SELLING> <CROSS_SELLING> <ARTICLE><![CDATA[10300001]]></ARTICLE> <AUTO><![CDATA[0]]></AUTO> <GROUP_NUMBER><![CDATA[100]]></GROUP_NUMBER> <AMOUNT/> </CROSS_SELLING> <CROSS_SELLING> <ARTICLE><![CDATA[10300002]]></ARTICLE> <AUTO><![CDATA[0]]></AUTO> <GROUP_NUMBER><![CDATA[100]]></GROUP_NUMBER> <AMOUNT/> </CROSS_SELLING> <CROSS_SELLING> <ARTICLE><![CDATA[00200050]]></ARTICLE> <AUTO><![CDATA[0]]></AUTO> <GROUP_NUMBER><![CDATA[200]]></GROUP_NUMBER> <AMOUNT/> </CROSS_SELLING> </CROSS_SELLINGS> </ARTICLE></ARTICLE_LIST>\[/code\](these are just cutouts of the real files)
 
Back
Top