我有一个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,并且会失败,并显示错误消息:找不到初始机柜字符
请提出建议
答案 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"/>