XSL |自关闭标签的转换

时间:2019-11-19 08:47:53

标签: xml xslt sql-loader

我有一个XML文件,可以在其中接收以下4种格式的数据。并使用XSL转换为SQL LOADER创建infile。

1)  <gmt:name>OTC<gmt:name/>

2) <gmt:name><gmt:name/>

3) <gmt:name/>

4) Tag not present 

我用来转换的XSL转换代码

<NAME>
<xsl:choose>
    <xsl:when test="gmt:name">
        <xsl:value-of select="gmt:name"/>
    </xsl:when>
    <xsl:otherwise>
        <xsl:text>NULL</xsl:text>
    </xsl:otherwise>
</xsl:choose>
</NAME>

但是使用此代码1,2,4格式可以正确解析,但是对于第3个我的代码却无法正常工作

结果

1) <NAME>OTC</NAME>
2) <NAME/>
3) <NAME/>
4) <NAME>NULL</NAME>

因此3)无法使用SQL LOADER,并且会失败,并显示错误消息:找不到初始机柜字符

请提出建议

2 个答案:

答案 0 :(得分:0)

您得到的输出是非常好的XML(<A></A><A/>都是写空元素的完全可接受的方法,任何不错的XML应用程序都将它们视为100%等效)。

我认为您可能误解了问题。您尚未完全弄清楚症状是什么。

我怀疑您的示例(1)和(2)是错别字,并且结束标记<A/>应该读为</A>

答案 1 :(得分:0)

当我通过XSTL解决时,将输出写为html

 <xsl:output method="html" version="4.0" encoding="UTF-8" indent="yes"/>

代码:https://xsltfiddle.liberty-development.net/ejivdHg/2