我有以下XML文件:
<?xml version="1.0"?>
<Table69>
</Table69>
想要读取元素“Table69”的主体,我使用了以下XSL文件:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="/">
<xsl:variable name="table" >
<xsl:choose>
<xsl:when test="normalize-space(.) != ''" >
<xsl:value-of select="." />
</xsl:when>
<xsl:otherwise>
<Exception>
field was missing
</Exception>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<Table id="69">
<xsl:value-of select="$table" />
</Table>
</xsl:template>
</xsl:stylesheet>
问题是:当xml文件包含Table69 tage下的值时,此值将成功打印,但是; 当此标记不包含值时,xsl vairalbe“table”应包含以下内容:
<Exception>
field was missing
</Exception>
但是,它不包括tage,这是转换的示例结果:
<?xml version="1.0"?>
<Table id="69">
field was missing <!-- where's the Exception tag surrounding the text field was missing ??? -->
</Table>
答案 0 :(得分:3)
xsl:value-of将打印所选内容的文本值,使用xsl:copy-of输出包括任何节点在内的全部内容。
<xsl:copy-of select="$table" />
答案 1 :(得分:0)
执行以下操作而不是<Exception>
:
<xsl:element name="Exception">
<xsl:text>Field was missing</xsl:text>
</xsl:element>
这应该生成您的<Exception>
XML元素。
如果您需要文本周围的换行符,请移除<xsl:text>
标记。