変換をしているときに「NULL」を書き込もうとしています。変換は、mysqlデータベースに挿入を行うためのものです。私はこれを試しました:
> <xsl:if test="incidencia =''"> <xsl:text>'NULL</xsl:text> </xsl:if>
しかし、それは機能しません。
これは私のXMLです:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<entregats>
<envio id="GI-000008">
<estats totalestats="3">
<estat datahora="2012-12-02T12:01:55">
<IDEstat>CAM</IDEstat>
<incidencia> No s ha pogut trobar el cami </incidencia>
</estat>
<estat datahora="2012-12-03T12:01:55">
<IDEstat>CAM</IDEstat>
<incidencia> Destinetari Absent</incidencia>
</estat>
<estat datahora="2012-12-04T12:02:55">
<IDEstat>CAM</IDEstat>
<incidencia> Destinetari Absent </incidencia>
</estat>
</estats>
<receptor>
<nom>J</nom>
<cognom>R</cognom>
<telefon>972510125</telefon>
<adreca>C/ZopeZope, nº15</adreca>
<codipostal>19000</codipostal>
</receptor>
</envio>
<envio id="GI-000009">
<estats totalestats="2">
<estat datahora="2012-12-01T09:01:55">
<IDEstat>CAM</IDEstat>
</estat>
<estat datahora="2012-12-01T12:01:55">
<IDEstat>ENT</IDEstat>
</estat>
</estats>
<receptor>
<nom>X</nom>
<cognom>S</cognom>
<cognom>P</cognom>
<telefon>972500025</telefon>
<adreca>C/Patatones, nº27</adreca>
<codipostal>17000</codipostal>
</receptor>
</envio>
<envio id="GI-000010">
<estats totalestats="3">
<estat datahora="2012-12-05T08:21:57">
<IDEstat>CAM</IDEstat>
</estat>
<estat datahora="2012-12-06T15:21:57">
<IDEstat>CAM</IDEstat>
</estat>
<estat datahora="2012-12-07T15:21:57">
<IDEstat>ENT</IDEstat>
</estat>
</estats>
<receptor>
<nom>D</nom>
<cognom>H</cognom>
<cognom>P</cognom>
<telefon>972500125</telefon>
<adreca>C/Oracle, nº12</adreca>
<codipostal>17000</codipostal>
</receptor>
</envio>
</entregats>
そしてこれは私のXSLです:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl" exclude-result-prefixes="xd" version="1.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates select="//envio" />
</xsl:template>
<xsl:template match="envio">
<xsl:for-each select="estats/estat">
<xsl:text>INSERT INTO HISTORIC_ESTATS (IDEnvio,DATAHORA,IDESTAT,INCIDENCIA) values (</xsl:text>
<xsl:text>'</xsl:text>
<xsl:value-of select="../../@id"/><xsl:text>','</xsl:text>
<xsl:value-of select="@datahora"/><xsl:text>','</xsl:text>
<xsl:value-of select="IDEstat"/><xsl:text>'</xsl:text>
<xsl:if test="incidencia =''">
<xsl:text>'NULL</xsl:text>
</xsl:if>
<xsl:if test="incidencia !=''">
<xsl:text>,'</xsl:text> <xsl:value-of select="incidencia"/>
<xsl:text>'</xsl:text>
</xsl:if>
<xsl:text>); </xsl:text>
</xsl:for-each>
</xsl:template> </xsl:stylesheet>
誰かが助けることができれば。
私が得た出力は次のようなものです:
INSERT INTO HISTORIC_ESTATS (IDEnvio,DATAHORA,IDESTAT,INCIDENCIA) values ('GI-000008','2012-12-02T12:01:55','CAM',' No s ha pogut trobar el cami ');
INSERT INTO HISTORIC_ESTATS (IDEnvio,DATAHORA,IDESTAT,INCIDENCIA) values ('GI-000008','2012-12-03T12:01:55','CAM',' Destinetari Absent');
INSERT INTO HISTORIC_ESTATS (IDEnvio,DATAHORA,IDESTAT,INCIDENCIA) values ('GI-000008','2012-12-04T12:02:55','CAM',' Destinetari Absent ');
INSERT INTO HISTORIC_ESTATS (IDEnvio,DATAHORA,IDESTAT,INCIDENCIA) values ('GI-000009','2012-12-01T09:01:55','CAM');
INSERT INTO HISTORIC_ESTATS (IDEnvio,DATAHORA,IDESTAT,INCIDENCIA) values ('GI-000009','2012-12-01T12:01:55','ENT');
INSERT INTO HISTORIC_ESTATS (IDEnvio,DATAHORA,IDESTAT,INCIDENCIA) values ('GI-000010','2012-12-05T08:21:57','CAM');
INSERT INTO HISTORIC_ESTATS (IDEnvio,DATAHORA,IDESTAT,INCIDENCIA) values ('GI-000010','2012-12-06T15:21:57','CAM');
INSERT INTO HISTORIC_ESTATS (IDEnvio,DATAHORA,IDESTAT,INCIDENCIA) values ('GI-000010','2012-12-07T15:21:57','ENT');
そして、発生率でない場合は「NULL」と書く必要があります。