xsl(1.0)を使用してxmlを変換できるかどうか、ただしコンテンツが含まれていない場合でもCDATA要素を保持できるかどうかを質問されました。xslの初心者として、私はその質問に少し圧倒されています...
これが簡単なサンプルです。
私が持っているもの
<AMOUNT/>
私が欲しいもの
<AMOUNT><![CDATA[]]></AMOUNT>
- コンテンツのない空のcdataセグメントを強制する方法はありますか?
- ファイル内のすべての要素に対してそれを行う方法はありますか?
- cdata-section-elementsにあるものだけのためにそれを行う方法はありますか?
(AMOUNT要素を見てください)
これが私のサンプルxmlです
<?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>
これが私のサンプルxslです
<?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>
これが実際の出力です
<?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>
(これらは実際のファイルの切り抜きです)