我使用下面的XSLT语法在我的XML文件中选择一些值并创建不同版本的XML文件,
<xsl:element name="FirstName">
<xsl:value-of select="//Invoice//FirstName"/>
</xsl:element>
我遇到的问题是当我的XML中有任何空值时,我的输出XML生成如下
<Invoice>
<FirstName />
</Invoice>
我想在存在空值
时生成如下所示的XML文件<Invoice>
<FirstName> </FirstName>
</Invoice>
我如何在XSLT中执行此操作? 感谢
答案 0 :(得分:2)
您可以输出评论,如
<xsl:comment/><xsl:value-of select="//Inoivce/FirstName"/>
这将导致输出
<FirstName><!-- --></FirstName>
哪个应该在下游工作得很好。
此技术有时用于强制script
标记为非关闭,因为它们必须是:
<script src="foo.js"><xsl:comment/></script>
答案 1 :(得分:-1)
试试这个:
XML:
<root>
<name>
<FirstName>Kishan</FirstName>
<LastName>Kumar</LastName>
</name>
<name>
<FirstName></FirstName>
<LastName>Raj</LastName>
</name>
</root>
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy><xsl:apply-templates select="node()|@*"/></xsl:copy>
</xsl:template>
<xsl:template match="FirstName">
<xsl:choose>
<xsl:when test="string-length(.) > 0">
<xsl:element name="FirstName">
<xsl:value-of select="."/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="FirstName">
<xsl:text> </xsl:text>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
输出:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<name>
<FirstName>Kishan</FirstName>
<LastName>Kumar</LastName>
</name>
<name>
<FirstName> </FirstName>
<LastName>Raj</LastName>
</name>
</root>